码迷,mamicode.com
首页 > 其他好文 > 详细

怎样用函数初始化结构体

时间:2015-03-19 11:30:13      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:c   结构体   指针   初始化   

问题

这里主要讨论函数的参数,应该是结构体呢,还是结构体的地址,还是二者都行。

实验证明,只能用结构体的地址。


代码

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

typedef struct 
{
  int a;   //"int a=0;" is wrong
  int b[10];    
}STU;


void init_struct_point(STU *s){		//参数为数组指针
	s->a=100;
	s->b[0]=5;
	s->b[1]=7;

	printf("in f_point(), s->a  %d\n",s->a);
	printf("in f_point(), s->b[0]  %d\n\n",s->b[0]);
}


void init_struct(STU s){			//参数为数组
	s.a=1;
	s.b[0]=2;
	s.b[1]=3;

	printf("in f(), s.a  %d\n",s.a);
	printf("in f(), s.[0]  %d\n\n",s.b[0]);
}



int main(){
    STU s;

	printf("s=%d \t &s=%d\n\n",s,&s);


	init_struct_point(&s);	//"s1"会引发编译错误

	printf("s=%d \t &s=%d\n\n",s,&s);


    printf("out f_point(), s.a  %d\n",s.a);
	printf("out f_point(), s.b[0]  %d\n",s.b[0]);
	printf("out f_point(), s.b[1]  %d\n\n",s.b[1]);



	init_struct(s);		//"&s1"会引发编译错误

    printf("out f(), s.a  %d\n",s.a);
	printf("out f(), s.b[0]  %d\n",s.b[0]);
	printf("out f(), s.b[1]  %d\n\n",s.b[1]);


 
    system("pause");
	 return 0;   
}



运行结果

技术分享


遗留问题

1.结构体变量名究竟是什么,请看s以及&s?

2.结构体变量名 和 结构体数组变量名 有什么区别和联系? http://blog.csdn.net/hiboy_111/article/details/44454149



怎样用函数初始化结构体

标签:c   结构体   指针   初始化   

原文地址:http://blog.csdn.net/hiboy_111/article/details/44454797

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!