自定义结构体类型: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. 逐个成员赋值时,可以只初始化其中的某一