栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习笔记---结构体数组初始化

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习笔记---结构体数组初始化

  既然结构体是一种数据类型,那么它也可以定义为数组的形式。比如要描述一本书的信息,可以将书的名称,作者,价格这些信息用一个结构体来描述,在使用的过程中不可能只描述一本书,所以就需要使用一个结构体数组来描述多本书的信息。

  首先声明一个结构体。

struct book
	{
		char title[30];
		char author[30];
		float value;
	};

  接下来定义结构变量,直接定义一个结构数组,在定义的时候初始化。

struct book books[3]={  
	[0]{
		.value = 19.8,
		.title = "语文",
		.author = "张三"
	},
	[1]{
		.title = "数学",
		.value = 21.3,
		.author = "李四"
	},
	[2]{
		.title = "英语",
		.value = 16.8,
		.author = "王五"
	},
   };

  数组总的元素用花括号{ }括起来,每个元素之间用逗号隔开。这样就直接初始化了3个书本的信息,在访问每本书时,可以像数组一样,用下标来访问。比如现在要访问书本1的作者。可以使用 books[1].author这样的方式去访问,首先books[1]表示结构体数组的中第一个元素,然后在使用点访问元素中的具体对象。

  比如要打印每本书的信息,可以使用下面的代码。

   printf("%s %s %frn",books[0].title,books[0].author,books[0].value); 
   printf("%s %s %frn",books[1].title,books[1].author,books[1].value); 
   printf("%s %s %frn",books[2].title,books[2].author,books[2].value); 

  在初始化的时候,数组中每个元素前面的标号也可以省略不写。比如上面的初始化代码可以修改为:

 struct book books[3]={  
	{
		.value = 19.8,
		.title = "语文",
		.author = "张三"
	},
	{
		.title = "数学",
		.value = 21.3,
		.author = "李四"
	},
	{
		.title = "英语",
		.value = 16.8,
		.author = "王五"
	},
   };

  默认情况下,这三个元素的也是按0、1、2的顺序排列。如果只想初始化部分元素的话,也可以只初始化一部分。

struct book books[3]={  
	[0]{
		.value = 19.8,
		.title = "语文",
		.author = "张三"
	},
	[1]{
		
	},
	[2]{
		.title = "英语",
		.value = 16.8,
		.author = "王五"
	},
   };

  比如现在只初始化了第一个和最后一个元素。输出结果如下:

  有时候为了书写的方便,初始化时每一个元素写一行。比如上面的代码也可以修改为:

 struct book books[3]={  
	{.value = 19.8,	.title = "语文",.author = "张三"},
	{.title = "数学",.value = 21.3,	.author = "李四"},
	{.title = "英语",.value = 16.8,	.author = "王五"},};

  也可以将这三行代码直接写成一行。

 struct book books[3]={{.value = 19.8,	.title = "语文",.author = "张三"},{.title = "数学",.value = 21.3,	.author = "李四"},{.title = "英语",.value = 16.8,	.author = "王五"}};   

  如果在初始化的时候按顺序给每个元素赋值,那么上面的代码还可以简写为:

struct book books[3]={{"语文","张三",19.8},{"数学","李四",21.3},{"英语","王五",16.8}};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号