之 結構體變量與結構體數組
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
};//要加“;”
struct student student1,student2;
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
} student1,student2;
//加“;”
struct
{
int num;
char name[20];
char sex;
int age;
float score;
} student1,student2;
以上可以說是結構體的三種形式,結構體是看以看做一個整體,是一個集合,集合中可以包含任意的類型,可以是int,可以是char和float.
一個學生的信息最適合用結構體來表示了,因為學生的信息有學好num,名字name, 年齡性別等等。Struct是結構體定義的符號,結構體內定義信息。可以表示為下圖所示:
一個學生的信息用結構體表示出來後,就可以用了,要進行創建對象,有兩種方式,
在結構體之外進行定義struct student student1,student2;)和 在結構體定義的時候定義} student1,student2;)。這兩種方式都是可以的,上述就是新創建了兩個新的學生student1和student2。
若想將其中的age換成出生日期,如下圖:
可以先定義一個struct date日期類型。
struct date { int year; int month; int day; }; struct student { int num; char name[20]; char sex; struct date birthday;//引用struct date,定義為birthday float score; } student1,student2;
上述中struct student中的成員birthday被定義成了struct date類型,那麼birthday就有了struct date的屬性。
結構體變量的引用無非就是引用結構體中的成員。它的引用方式為:
結構體變量名 . 成員名
比如:student 1 .score ,它表示學生stucent 1的分數,中間必須得有“.”,這個點是成員運算符,比如:student 1.score=89.6
當成員本身又是結構體類型時的子成員訪問應該是:student 1.birthday.year。
同一種類型的結構體變量之間可以直接賦值:比如:student 1=student 2
可以把一個結構體變量中的內嵌結構體類型成員賦給同種類型的另一個結構體變量的相應部分:student 2.birthday=student 1.birthday。
#include <stdio.h> struct student { int num; char name[20]; char sex[2]; int age; float score; /*結構體變量的初始化*/ }student1={11301,"zhaoyuqiang","F",22,450}; main() { //輸出成員變量 printf("學號=%d\n名字=%s\n",student1.num,student1.name); printf("分數=%f\n",student1.score); }
struct student { int num; char name[20]; char sex; int age; float score; } student 1,stu[30];
上述定義了一個結構體變量student 1和一個結構體數組stu,這個數組有30個元素,每一個元素都是 struct student 類型的,如下圖所示:
Num
Name
Sex
Age
Score
Stu[0]
11301
Zhangping
F
56
89
........
..........
........
........
........
........
Stu[29]
11302
Liheng
M
12
56
調用的時候用stu[i].score調用,i為數組下標元素
#include <stdio.h> struct student { int num; char name[20]; char sex; int age; float score; }; struct student stu[4]={{11301,"zhaoyuqiang",'F',19,458.6}, {11302,"lizheng",'F',18,456.6}, {11305,"xuefeiyang",'M',20,168.9}};//數組的初始化,要定義在結構體外部或者靜態數組才能初始化。 main() { int i; float a=0,s=0; for(i=0;i<4;i++) { a=a+stu[i].age; s=s+stu[i].score; } printf("平均年齡是%f\n",a/4); printf("平均成績是%f\n",s/4); }
本文出自 “趙玉強的博客” 博客,請務必保留此出處http://zhaoyuqiang.blog.51cto.com/6328846/1291796