C語(yǔ)言結(jié)構(gòu)體定義
C語(yǔ)言中的“結(jié)構(gòu)體”其實(shí)就相當(dāng)于其他高級(jí)語(yǔ)言中的“記錄”,結(jié)構(gòu)體的定義方法如下:
例如:
Struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};(注意最后的分號(hào)不能省略)。
其中第一行的`“student”是該結(jié)構(gòu)體的名稱,花括號(hào)里面的內(nèi)容是結(jié)構(gòu)體的成員名,這是聲明結(jié)構(gòu)體的一般形式。也可以在聲明結(jié)構(gòu)體的同時(shí)對(duì)它進(jìn)行初始化,例如:
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]”稱為結(jié)構(gòu)體數(shù)組,它屬于結(jié)構(gòu)體變量,在定義該變量的同時(shí)對(duì)它進(jìn)行了初始化操作。我們也可以先聲明結(jié)構(gòu)體,然后再對(duì)它進(jìn)行初始化操作。
例如:
#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", a.name);
printf("Age:");
scanf("%d", &a.age);
printf("Sex:");
scanf("%s", a.sex);
printf("Dept:");
scanf("%s", a.depart);
printf("Grade1:");
scanf("%f", &a.grade1);
printf("Grade2:");
scanf("%f", &a.grade2);
printf("Grade3:");
scanf("%f", &a.grade3);
wage=a.grade1+a.grade2+a.grade3;
printf("The sum of wage is %6.2f\n", wage);
}
return 0;
}
該程序中定義了一個(gè)名為“student”的結(jié)構(gòu)體,變量名為“a”,然后再后面“if”包含的符合語(yǔ)句中對(duì)該結(jié)構(gòu)體進(jìn)行初始化。在此,我們可以看出,對(duì)結(jié)構(gòu)體的初始化,只能對(duì)它里面的每個(gè)成員分別初始化。
#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=%.3f\n",s);
ave=s/5;
printf("average=%.3f\ncount=%d\n",ave,c);
}
int main()
{
struct stu *ps;
ps=pupil;
avg(ps);
return 0;
}
此程序是關(guān)于結(jié)構(gòu)體指針變量作函數(shù)參數(shù),這樣可以提高程序的運(yùn)行效率,程序中我們定義了一個(gè)“stu”的結(jié)構(gòu)體,變量名為“pupil”,并對(duì)其進(jìn)行了初始化,在主函數(shù)中定義了一個(gè)該結(jié)構(gòu)體的指針ps,將pupil賦值給ps,當(dāng)函數(shù)avg()調(diào)用該結(jié)構(gòu)體時(shí),用指針ps來(lái)傳遞pupil的地址,從而,提高了該程序的效率。
結(jié)構(gòu)體與指針的結(jié)合使用,可以有效的解決現(xiàn)實(shí)生活中的很多問(wèn)題,因此C語(yǔ)言中的指針和結(jié)構(gòu)體應(yīng)該能夠熟練的掌握。
【C語(yǔ)言結(jié)構(gòu)體定義】相關(guān)文章:
C語(yǔ)言變量定義02-27
C語(yǔ)言宏定義12-15
講解C語(yǔ)言編程中的結(jié)構(gòu)體對(duì)齊11-19
初步剖析C語(yǔ)言編程中的結(jié)構(gòu)體12-19
C語(yǔ)言結(jié)構(gòu)體(struct)常見(jiàn)使用方法12-05
C語(yǔ)言結(jié)構(gòu)體(struct)常見(jiàn)使用方法10-27
C語(yǔ)言自定義函數(shù)12-10
計(jì)算機(jī)二級(jí)C語(yǔ)言考點(diǎn):結(jié)構(gòu)體和共用體12-10