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