問題
這里主要討論函數的參數。應該是結構體呢。還是結構體的地址,還是二者都行。
實驗證明,僅僅能用結構體的地址。
代碼
#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
