自定义结构体类型:struct使用详解

自定义结构体类型:struct使用详解



一、结构体(struct)

在程序设计时,最重要的步骤之一就是选择表示数据的方法。在许多的情况下,简单变量甚至是数组还不足以表示一个事物的属性。为此,C语言提供了结构体变量(structure variable)提高表示数据的能力。
结构体是一些值的集合,这些值称为成员变量,把一些基本类型的数据组合在一起,形成一个新的复杂数据类型。结构体中的每个成员可以是不同类型的变量。
掌握:
1、为结构体建立一个格式或样式
2、声明一个合适的结构体变量
3、访问结构变量的各个部分

1、结构体的声明方法

结构体声明常用形式:

struct  tag
{
	member-list;	//成员变量,
}variable-list;		//;不可省略

定义结构体的三种形式 (推荐使用第一种)

例如:描述一本书(包括:书名、作者、价格等)
第一种:只定义一个新的数据类型,没有定义变量

struct book		//struct book 所起的作用相当于一般声明中的 int 或 float 
{
	char title[30];
	char author[30];
	float price;	
};	//分号不能省略,没有定义变量

struct book Jane_Eyre;	//在使用时再定义结构体变量 Jane_Eyre(英国文学名著《简·爱》作家夏洛蒂·勃朗特)

第二种:定义新的数据类型同时定义变量

struct book
{
	char title[30];
	char author[30];
	float price;	
}Jane_Eyre;		//分号不能省略,同时定义变量
						//声明的右花括号跟变量名

第三种:不完全声明的结构体

struct 			//匿名结构体类型,省略了结构体标签book
{
	char title[30];
	char author[30];
	float price;	
}Jane_Eyre;		//分号不能省略,同时定义变量

但是,如果打算多次使用结构模板,就要使用带标记的形式;或者,使用typedef函数。

2、结构体的赋值

我们知道初始化变量和数组的方法:

int sum =0;
int fibo[ 5 ] = { 1,1,2,3,5};

结构变量能不能这样初始化呢?答案是 :yes
初始化结构变量与初始化数组的语法语法类似:

方法一:定义变量的同时赋初始值

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

struct book Jane_Eyre = {"Jane_Eyre","Charlotte Bronte",35.5};

***************************************************************
struct book
{
	char title[30];
	char author[30];
	float price;	
} Jane_Eyre = {"Jane_Eyre","Charlotte Bronte",35.5};
***********************************************************************

使用一对{ }来对结构体进行初始化,各个初始化项用逗号隔开。
为了让初始化项与结构体体中的各个成员关联更加明显,我们可以让每个成员单独占一行。这样做的目的只是为了提高可读性,对于编译器本身而言并没有区别;

struct book masterwork ={
						"the Old Man and the Sea",
						"Hemingway",
						32.4
						};

方法二:逐个成员赋值

struct book Jane_Eyre = {
						.title = "Jane_Eyre",
						.price = 35.5;
						.author="Charlotte Bronte"
						};
*********************************************************
struct book Jane_Eyre = {
						.price = 35.5;
						};

1. 逐个成员赋值时,可以只初始化其中的某一

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值