C:浅谈结构体(二)

这篇博客介绍了C语言中结构体的嵌套使用,如何定义和初始化结构体数组,以及如何通过结构体指针访问成员。示例包括创建Book和Date结构体,用结构体数组存储系列书籍信息,并展示了结构体指针的两种访问方式。
摘要由CSDN通过智能技术生成

结构体嵌套

  上次,我们声明了一个结构体类型book,book里的一个成员是date,用来存放书籍的出版日期,对于这个日期,我们可以单独为他声明一个结构体类型date来存放,这样可以明确到年月日

struct Date
{
	int year;
	int month;
	int day;
 };
 
 struct Book
 {
 	char title[128];
 	char author[40];
 	float price;
 	struct Date date; //  结构体的嵌套,在Book结构体里面再声明一个结构体date 
 } book = {  //  初始化变量 
 	"<带你学C带你飞>",
	 "小甲鱼" ,
	 48.8,
	 {2017,11,11},  // 另外一个结构体 ,括起来。 
     "清华大学出版社"       
 }; 
 int main (void)
 {
    printf("书名:%s\n",book.title) ;
	printf("作者:%s\n",book.author) ;
	printf("售价:%.2f\n",book.price) ;
	printf("出版日期:%d-%d-%d\n",book.date.year,book.date.month,book.date.day) ;  // 必须去到最底层才能访问,逐层深入。 
	printf("出版社:%s\n",book.publisher) ;  //  这里的book前没加&是因为这是个数组

     return 0;
}

结构体数组

   我们上面讨论的是书籍信息的结构体,如果想要搞成系列的话,那可以使用结构体数组来一次存放,结构体数组跟我们之前学习过的数组概念是一致的,只不过每个数组元素不再是简单的基础类型,而是一个结构体类型的数据,所以每个数组元素都包含该结构体的所有成员。

定义:

第一种方法是在声明结构体的时候进行定义:

 struct 结构体名称
{
   结构体成员1;
   结构体成员2;
   结构体成员3;
   …….
} 数组名 [长度];

第二种方法是先声明一个结构体类型(比如上面的Book),再用此类型定义一个结构体数组

 struct 结构体名称
{
   结构体成员1;
   结构体成员2;
   结构体成员3;
   …….
} struct 结构体名称 数组名[长度];

初始化结构体数组

结构体数组在定义时就能进行初始化


struct Book book[3] = {
	{"《零基础入门学习Python》","小甲鱼" ,49.5,{2016,11,11},"清华大学出版社"},
	{"《零基础入门学习Scratch》","不二如是",49.9,{2017,10,1},"清华大学出版社"},
	{"《带你学C带你飞》","小甲鱼",49.9,{2018,11,11},"清华大学出版社"} 
	}; 

结构体指针

指针我们都知道,什么都能指,当然也可以指向结构体,指向结构体变量的指针我们称为结构体指针

struct Book *pt  // 声明一个指向Book的结构体指针变量pt

pt  = &book ;  // 将book的地址赋值给指针变量

通过结构体指针访问结构体成员

方法一:(*结构体指针).成员名

方法二:结构体指针 -> 成员名

两种方法完全等价,无论使用哪个都能访问结构体成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值