/********************* * 指向結構體變量的指針做函數參數 * ***********************/ #include<stdio.h> #include<string.h> struct student { int num; char name[20]; //char *name; //若定義爲指針則應與下面 stu.name = "jacob"; 配對使用,交叉使用則會報錯 //當定義爲char name[20]時,這是一個存在於棧的具體空間,而"jacob"則是一個字符串常量,存在於內存的data空間。 float score[3]; }; void print(struct student *); //聲明一個結構體指針 void main() { struct student stu; stu.num=18; strcpy(stu.name,"jacob"); //用函數strcpy,"jacob"複製進數組name內。 //stu.name = "jacob"; stu.score[0]=91; stu.score[1]=95; stu.score[2]=99; print(&stu); // 結構體變量stu做爲函數實參。 } void print(struct student *p) //定義一個結構體指針變量p,接收的是結構體變量stu的地址即p指向結構體stu首地址 { printf("num :%d\n",p->num); //此時引用結構體各成員須要用此格式 指針變量->結構體成員變量名。 printf("name :%s\n",p->name); printf("score_1 :%f\n",p->score[0]); printf("score_2 :%f\n",p->score[1]); printf("score_3 :%f\n",p->score[2]); }