问题实例:
录入一份图书目录,包含图书的价格,作者姓名以及书名。(下文以解决该问题的过程来解释结构体相关知识,参考C primer plus_p439)
1.定义结构体变量
struct book { /*先定义结构体类型,再定义结构体变量*/ struct book {/*在定义结构体类型的同时定义结构体变量*/
char title [N]; char title [N];
char author [N]; char author [N];
float value; float value;
}; }library;
struct book library;
访问结构体成员是用.
运算符 ,例:library.value
。
2.定义结构体数组
struct book { /*先定义结构体类型,再定义结构体变量*/ struct book {/*在定义结构体类型的同时定义结构体变量*/
char title [N]; char title [N];
char author [N]; char author [N];
float value; float value;
}; }library[num];
struct book library[num];
访问结构体成员是用.
运算符 ,例:library[n].value
。
辨析:
library //一个book结构的数组
library[2] //一个数组元素,该元素为book类型
library[2].title // 一个char类型数组(library[2]的title成员)
library.[2].title[4] //数组中library[2]元素的title成员的一个字符
3.嵌套结构:可以使用结构体的嵌套来解决一些问题。(访问时使用两个.
运算符即可)
4.结构体指针
struct book * thebook //声明结构体指针
thebook = &library;//指向结构体变量的指针
thebook = &library[0];等价于 thebook = &library //指向结构体数组首地址的指针
thebook++; //访问下一个结构体数组成员
thebook->value //访问成员
5.向函数传递结构体
向函数传递结构体单个成员
复制单个成员的内容
向函数传递结构体的完整结构
复制结构体所有成员
向函数传递结构体的首地址
仅复制一个地址
其他特性:同类型的结构变量可以直接赋值。