C語言結構體定義

C語言中的“結構體”其實就相當於其他高級語言中的“記錄”,結構體的定義方法如下:

C語言結構體定義

例如:

Struct student

{ int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

};(注意最後的分號不能省略)。

其中第一行的“student”是該結構體的名稱,花括號裏面的內容是結構體的成員名,這是聲明結構體的一般形式。也可以在聲明結構體的同時對它進行初始化,例如:

struct stu

{

int num;

char *name;

char sex;

float score;

}pupil[5]={

{101,"Tom",'M',45.8},

{102,"Mike",'M',62.5},

{103,"Chris",'F',92.5},

{104,"Rose",'F',87.6},

{105,"Nate",'M',58.8}

};

代碼中的“pupil[5]”稱爲結構體數組,它屬於結構體變量,在定義該變量的同時對它進行了初始化操作。我們也可以先聲明結構體,然後再對它進行初始化操作。

例如:

#include

int main()

{

struct student

{

char name[8];

int age;

char sex[4];

char depart[20];

float grade1,grade2,grade3;

}a;

float wage;

char c='Y';

if(c=='Y'||c=='y')

{

printf("nName:");

scanf("%s", );

printf("Age:");

scanf("%d", &);

printf("Sex:");

scanf("%s", );

printf("Dept:");

scanf("%s", rt);

printf("Grade1:");

scanf("%f", &e1);

printf("Grade2:");

scanf("%f", &e2);

printf("Grade3:");

scanf("%f", &e3);

wage=e1+e2+e3;

printf("The sum of wage is %6.2fn", wage);

}

return 0;

}

該程序中定義了一個名爲“student”的結構體,變量名爲“a”,然後再後面“if”包含的`符合語句中對該結構體進行初始化。在此,我們可以看出,對結構體的初始化,只能對它裏面的每個成員分別初始化。

#include

struct stu

{

int num;

char *name;

char sex;

float score;

}pupil[5]={

{101,"Tom",'M',45.8},

{102,"Mike",'M',62.5},

{103,"Chris",'F',92.5},

{104,"Rose",'F',87.6},

{105,"Nate",'M',58.8}

};

void avg(struct stu *ps)

{

int c=0,i;

float ave,s=0;

for(i=0;i<5;i++,ps++)

{

s+=ps->score;

if(ps->score<60) c+=1;

}

printf("s=%.3fn",s);

ave=s/5;

printf("average=%.3fncount=%dn",ave,c);

}

int main()

{

struct stu *ps;

ps=pupil;

avg(ps);

return 0;

}

此程序是關於結構體指針變量作函數參數,這樣可以提高程序的運行效率,程序中我們定義了一個“stu”的結構體,變量名爲“pupil”,並對其進行了初始化,在主函數中定義了一個該結構體的指針ps,將pupil賦值給ps,當函數avg()調用該結構體時,用指針ps來傳遞pupil的地址,從而,提高了該程序的效率。

結構體與指針的結合使用,可以有效的解決現實生活中的很多問題,因此C語言中的指針和結構體應該能夠熟練的掌握。