指向結構體變量的指針做函數參數

 /*********************
*
指向結構體變量的指針做函數參數
*
***********************/
#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]);
}
相關文章
相關標籤/搜索