结构体的定义:
结构体 struct,如下:
struct book{
char title[MAXTITL];
char author[MAXAUTL];
float value;
};
其中struct 是关键字,book为代表该种结构布局的一个标记;经如此声明后,便可定义多个该种结构体布局的变量,如下:
struct book library,bill;
这样便把library,bill定义为一个book结构布局的变量。
如下结构可将声明和定义组合成一个步骤(但这样便不能多次使用该结构模板):
struct {
char title[MAXTITL];
char author[MAXAUTL];
float value;
}library;
结构体声明时,编译器并未其分配空间,当创建了如此一个结构变量后,编译器才会为该变量分配空间。
同样我们也可以定义结构体类型的指针,如下:
struct book *ptbook;
一般函数会将结构体指针作为形参进行传递,而不直接传递结构体,这样效率更高一些。
对于结构体成员的访问格式如下:
library.title
ptbook->title
结构体的名字不同于数组,不能代表结构体的地址,如需获取结构体的地址,需在其前面加&,如&library。
结构体的初始化
结构体的初始化与数组类似,可采取如下方式:
struct book library={
"The Little Prince",
"name",
25
};
可以只初始化部分成员,如下:
struct book library={.value=15};
也可以按照任意顺序使用指定初始化器(designated initializer ):
struct book library={
.value=25,
.author="Name",
.title="The Little Prince"
}
自然,也可以最原始的方法:
struct book library;
library.title="The Little Prince";
library.author="Name";
library.value=25;
ok ,以上内容总结于C Primer Plus(第6版)
如有误,欢迎指正~