文章目录
-
-
-
- 结构体嵌套
- 结构体数组
- 初始化结构体数组
- 结构体指针
-
- 指针访问成员方法
-
-
结构体嵌套
比如上篇博客的代码
struct Book
{
char title[128];
char author[40];
float price;
unsigned int date;
char publisher[40];
};
可以把date单独再定义成一个结构体
struct Date
{
int year;
int month;
int day;
};
struct Book
{
char title[128];
char author[40];
float price;
struct Date date;//别忘记了struct这个前缀
char publisher[40];
}book={"dainixue","yuyijie",48.8,{2017,1,1},"jiangsudaxue"};//这里直接初始化
printf("date is: %d-%d-%d\n",book.date.year,book.date.month,book.date.day);
结构体数组
每个数组都是一个结构体的数据
定义方法:
1.在声明结构体的时候进行定义
struct 结构体名称
{
成员;
}数组名[长度];
2.先声明一个结构体类型,再用此类型定义一个结构体数组
struct 结构体名称
{
结构体成员;
};
struct 结构体名称 数组名[长度];
初始化结构体数组
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35UeJR0TxUFVPpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1EDO1QDO0gTMwETMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
结构体指针
指向结构体变量的指针
struct Book *pt;
我们知道数组名其实是指向数组的第一个元素的地址,所以可以将数组名直接赋值给指针变量,但要注意,结构体变量不一样,结构体变量名并不指向结构体的地址,所以要进行取值,必须要用取址运算符 &。
pt=&book;
指针访问成员方法
1.
(*结构体指针).成员名
2.
结构体指针->成员名
//箭头只能用于指针
两种方法在实现上完全等价
struct Book *pt;
pt=&book;
printf("name: %s\n",(*pt).title);
printf("name: %s\n",pt->title);