问题
这里主要讨论函数的參数。应该是结构体呢。还是结构体的地址,还是二者都行。
实验证明,仅仅能用结构体的地址。
代码
#include#include #include 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; }