首页 理论教育 C语言程序设计:结构体变量初始化和引用

C语言程序设计:结构体变量初始化和引用

时间:2023-10-29 理论教育 版权反馈
【摘要】:建立一个结构体类型,用来存放学生信息,并显示出来。允许只对其中部分成员初始化。定义了结构体变量之后,就可以引用这个变量。例如:student.num=201801;printf;sum=student1.score+student2.score;不能把结构体变量作为一个整体进行输入输出。一般对结构体变量的使用,包括赋值、输入、输出、运算等都是通过结构体变量的成员来实现的。

C语言程序设计:结构体变量初始化和引用

定义了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也是一个结构体变量,而不是一个简单类型的成员变量。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈