定义了student1、student2变量后,即可向这两个变量中的各个成员赋值,和其他类型的变量一样,对结构体变量也可以在定义时进行初始化赋值。
【例8.1】建立一个结构体类型,用来存放学生信息,并显示出来。
程序内容如下:
1 /*这是一个对结构体变量初始化知识讲解的事例程序*/
2 #include<stdio.h>
3 int main()
4 {
5 struct Student
6 {
7 int num;
8 char name[20];
9 char sex;
10 int age;
11 float score;
12 char addr[30];
13 }student={201801,"Li Ming",′M′,18,90,"Jinan"};
14 printf("NO.:%d\n NAME:%s\nSEX:%c\n AGE:%d\nSCORE:%f\n ADDR:%s\n",student.num,student.name,student.sex,student.age,student.score,student.addr);
15 return 0;
16 }
程序结果如图8.3所示:
图8.3 例8.1程序结果图
需要注意:
(1)结构体变量初始化列表是由花括号括起来的,里面包含要赋值的常量,这些常量依次赋给结构体变量中的各成员。允许只对其中部分成员初始化。(www.xing528.com)
例如:
struct Student a={.name="Wang Qiang"};
“.name”代表结构体变量a中的成员a.name。其他未赋值的数值型成员被系统初始化为0,字符型成员为′\0′,指针型成员为NULL。
(2)定义了结构体变量之后,就可以引用这个变量。引用结构体变量成员的一般形式是:
结构体变量名.成员名
“.”是成员运算符,它在所有的运算符中优先级最高,因此可以把“结构体变量名.成员名”作为一个整体看待。例如:“student.num”代表学生的学号。结构体变量的成员可以像普通变量一样进行赋值、输入、输出和运算。例如:
student.num=201801;
printf("%d",student.age);
sum=student1.score+student2.score;
(3)不能把结构体变量作为一个整体进行输入输出。一般对结构体变量的使用,包括赋值、输入、输出、运算等都是通过结构体变量的成员来实现的。例如要输出变量student所有成员的值,应该这样引用:
printf("%d\n%s\n%c\n%d\n%f\n%s\n",student.num,student.name,student.sex,student.age,student.score,student.addr);
而不能这样引用:
printf("%d\n%s\n%c\n%d\n%f\n%s\n",student);
输入变量student成员的值,应该这样引用:
scanf("%d,%s,%c,%d,%f,%s\n",&student.num,&student.name,&student.sex,&student.age,&student.score,&student.addr);
而不能这样引用:
scanf("%d,%s,%c,%d,%f,%s\n",&student);
(4)相同类型的结构体变量可以互相赋值。假设student1和student2是struct Student结构体类型的两个变量,则可以进行下面运算:
student1=student2;
(5)变量都有地址,可以引用结构体变量或其成员的地址。例如:“printf("%o",&student);”即为输出结构体变量student的首地址(也就是成员变量student.num的地址)。
(6)如果成员本身又是一个结构体,则必须逐级找到最低级的成员才能使用。例如:“student.birthday.year”不能用student.birthday来访问student变量中的成员birthday,因为birthday也是一个结构体变量,而不是一个简单类型的成员变量。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。