C语言之结构体(一)

1、建立结构声明

//该声明描述了一个由两个字符数组和一个float类型变量组成的结构。
//该声明并没有创建实际的数据对象,只是描述了该对象由什么组成
//(有时候我们成为模板)
struct book		//book是标记名,是可选的。
{
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
};   //这样就创建了一个结构模板。
//分析:关键字:struct 表明跟在其后的是一个结构,后边是一个可选的标记(本例中是book)。
//我们声明一个结构体变量
struct book library;//把library声明为一个使用book结构的变量。

注意:
1.1:这个声明可以放在所以函数的外部,也可以放在函数的内部。如果把该声明放在函数内部,它的标记只限于该函数内部使用。如果把声明放在函数外部,那么该声明之后的所以函数都可以使用它的标记。
1.2:结构的标记名是可选的。

2.定义结构变量
结构有两层含义:一就是“结构布局”,在1中讨论了,结构布局告诉编译器如何表示数据,但是它并未让编译器为数据分配空间。二就是创建一个结构变量。

struct book library;//创建一个结构体变量library。
//当编译器执行这行代码的时候就创建了一个结构变量library,编译器使
//用book模板为该变量分配空间。

注意:
2.1:在结构声明中,struct book所起的作用相当于一般声明中的int 或者float等。可以定义struct book类型的变量,或者甚至是指向struct book类型结构的指针。

struct book doyle, panshin, *ptbook;

就计算机而言,下边的声明:

struct book library;

是以下声明的简化:

struct book{//有结构标记
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
}library;

换句话说:就是声明结构的过程和定义结构变量的过程可以组合成一个步骤。

struct {//无结构标记
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
}library;

有标记与无标记的区别:如果要多次使用结构模板,那么就要使用有标记的形式。
3.初始化结构

struct book library = 
{
	"luotuoxiangzi",
	"laoshe",
	15.6
}	

注意:
3.1:我们的初始化也是在一个大括号中完成的,大括号中是一个初始化列表,各个初始化项用逗号隔开。

4.访问结构成员
可以使用(.)访问结构中的成员。例如:library.value。

scanf("%f",&library.value);//完全没有问题,.的优先级比&高。

5.结构的初始化器(可以初始化结构中的一部分)

//例如:
struct book surprise = {.value = 99.88};//只初始化一个成员变量。
struct book gift = {
	.value = 23.54,
	.author = "ABCD",
	.title = "EFGH"
};//按照任意顺序初始化

注意:
5.1:与普通变量一样,对特定成员的最后一次赋值才是它实际的值。
6.结构数组

struct book library[MAXBKS]; //book类型结构的数组。

注意:
6.1:library不是变量,只是一个数组名,而library[1]等等才是变量。如果要访问,那么library[0].value……此次类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值