C 知识量:16 - 74 - 317
C语言的结构变量扩展了程序员表示数据的能力,结构不属于基本数据类型,先来看一个结构的声明:
struct teacher { char name[20]; char sex[10]; int age; };
以上代码声明了一个名为teacher的结构,它由两个字符数组和一个int类型变量组成。从语法上来看:
struct是声明结构的关键字,表明其后是一个结构。
teacher是该结构的名称,也可以不使用名称,但是如果想要在后续代码中再次引用该结构,就应当设置名称。
用一对花括号括起来的是结构的成员类别。每个成员由自己的声明来描述具体类型。通常,成员由基本类型构成,但也可以是其他结构。
最后的分号是必须的,不能省略。
声明结构只是告诉编译器如何表示数据,但并未真正分配内存空间。要想真正创建一个结构变量需要使用以下形式:
struct teacher zhang;
以上代码创建了一个名为zhang的teacher结构。其中,struct teacher起到的作用与int或double等关键字相同。以上代码属于简化的声明,完整的声明如下:
struct teacher { char name[20]; char sex[10]; int age; } zhang;
也可以省略结构名称:
struct { char name[20]; char sex[10]; int age; } zhang;
如上节所提到的,如果想要在后续代码中再次引用该结构,就不要在声明结构时省略结构名称,同时,应当尽量使用简化的声明格式。
对于结构teacher:
struct teacher { char name[20]; char sex[10]; int age; };
其初始化的代码示例如下:
struct teacher zhang = { "ZhangShu", "male", 45 };
注意:每一个结构成员之间使用逗号分隔。
结构类似于数组,要访问结构的成员,可以使用点(.)运算符。访问结构变量zhang中的各个成员的示例代码如下:
zhang.name; zhang.sex; zhang.age;
结构的初始化器提供了另一种初始化结构的方式,它使用点运算符和成员名来标示特定的元素。例如:只初始化结构变量zhang的年龄:
struct teacher zhang = { .age = 50 };
也可以按照任意顺序初始化各成员:
struct teacher zhang = { .age = 45, .name = "ZhangShu", .sex = "male", 50 };
其中,age的值最终会被初始化为50,因为规定最后一次赋值才是实际有效的,(按照结构声明时的顺序)50紧跟在sex成员之后,覆盖了之前的45。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6