目录
结构体是什么、声明和定义
1.结构体类型的概念
结构体是C语言中的一种自己定义构造的类型,它由若干个结构体“成员”组成。其中的每个成员可以是基本数据类型,可以是其他的构造类型。
(引出文章-结构体成员可以包含本结构体自身吗-即结构体可以自引用吗?)
2. 结构体的声明与定义
2.1 结构体声明(结构布局)
声明结构体使用关键字struct
声明的一般形式如下:
struct 结构体名
{
成员列表;
};
这样“struct+结构体名” 就构成了一个新的类型名。
2.2 结构体变量声明(创建)
声明一个结构体表示的是创建一个新的类型名,用这个类型名再定义一个变量才是创建了一个数据对象,具有内存空间。
定义的一般形式如下:
struct 结构体名 结构体变量名列表;
2.3
结构体有两层含义:
一层是结构布局(结构体声明),即描述了结构由哪些数据组成。
一层是创建结构体变量(结构体变量定义)。
结构布局告诉编译器如何表示数据,但是它只是一种数据类型,没有对象,不会让编译器为数据分配空间。
创建结构体变量才会让编译器为该变量分配存储空间。
举例:
-结构布局
struct book
{
char title[50];
char author[50];
float price;
int page;
};
-创建结构体变量
struct book Shot;
struct book 的作用相当于 一般声明中的int或float
3. 定义结构体变量的几种方式
3.1 先声明结构体类型,再定义结构体变量
一般形式如下:
struct 结构体名
{
成员列表;
};
结构体类型名 变量名列表;
举例:
struct book
{
char title[50];
char author[50];
float price;
int page;
};
struct book Shot, Hero;
3.2 在声明结构体类型时,同时定义结构体变量。
一般形式如下:
struct 结构体名
{
成员列表;
}变量名列表;
举例:
struct book
{
char title[50];
char author[50];
float price;
int page;
} Shot, Hero;
3.3 直接定义结构体变量,省略结构体名
直接定义结构体变量,省略结构体名,这种只能是一次性的声明。
如果想要多次使用结构体类型,就要使用带结构体名(结构标记或结构标签)的形式或者使用typedef方式。
struct
{
成员列表;
}变量名列表;
举例:
struct
{
char title[50];
char author[50];
float price;
int page;
} Shot, Hero;