上一章<一起学习C语言:函数> 中,我们了解了函数的声明形式和程序的编译过程,以及函数的递归调用和函数的指针调用。本章节,我们分析结构体。
章节预览:
结构体
1. 结构体的定义形式
2. 结构变量的定义形式
3. 结构变量初始化赋值
目录预览
章节内容:
结构体
实际编程中,一些函数采用数据按组传入使用,比如整形数组对象(512位成员)作为参数传入。如果一组数据中包含不同类型的数据时,数组已不再适用,我们需要考虑其它保存方式。首先,我们了解一组数据中包含不同类型的数据的例子:某地游泳馆举行100米自由泳比赛,选手李的成绩为55.26秒。这个例子中,姓名应为字符类型,成绩应为单浮点数类型。
接下来,我们通过本章节内容了解结构体的定义形式和用法。
1. 结构体的定义形式
结构体与之前接触的类型不同,需要自定义类型名称和成员信息。
结构体定义形式:
struct 名称 {
成员1
…
};
结构体定义语句由关键字(struct)、结构名称、语句块和语句结束符(;)四部分组成,其中关键字、语句块和语句结束符不能省略。
结构体定义举例:
struct swim {
char name[64];
float grade;
};
上述示例定义名称为swim的结构体,语句块内有两位成员。第一个成员为字符类型数组对象name,第二个成员为单浮点数类型对象grade。
2. 结构变量的定义形式
结构变量可以通过多种形式定义,即可以根据结构名称定义结构变量,也可以在定义结构语句中指定结构变量,还可以直接定义结构变量。
接下来,分析结构变量的几种定义形式:
1. 根据结构名称定义结构变量:
struct swim {
char name[64];
float grade;
};
struct swim sw;
先定义结构语句,然后通过关键字加结构名称定义结构变量。
2. 定义结构语句中指定结构变量:
struct swim {
char name[64];
float grade;
} sw;
定义结构语句的同时指定结构变量。
3. 隐式定义结构语句中指定结构变量:
struct {
char name[64];
float grade;
} sw;
隐式属于泛指含义,在这里表示定义结构语句中不指定结构名称,即定义结构语句外无法通过结构名称定义结构变量。这种形式一般较少使用,作为了解即可。
3. 结构变量初始化赋值
结构变量初始化赋值方式与数组变量相似,都是在大括号内为成员赋值。
结构变量初始化赋值:
struct swim {
char name[64];
float grade;
}sw = {NULL, 0.0};
struct swim swi = {NULL}; //sw与swi初始化效果相同
结构变量初始化只为第一个成员赋值时,其余的成员自动赋值为0。在结构体中又存在结构类型成员或数组类型成员时,可以采用二维数组方式赋值:
struct swim {
char name[64];
int circle[64];
float grade;
char* name1;
}sw = {{NULL}, {1, 2, 3}};
结构变量sw初始化完成后,结构变量成员name为0、0…0,circle为1、2、3、0…0,grade为0.0,name1为NULL。
总体来说,结构变量与数组变量在初始化赋值方面较为相似,但类型构造方面存在一些差异。结构变量的地址是结构内存的首地址,也是第一个结构变量成员的地址,结构变量中储存的值是结构变量成员;而数组变量地址和数组变量储存的值都是数组内存的首地址。
目录预览
<一起学习C语言:C语言发展历程以及定制学习计划>
<一起学习C语言:初步进入编程世界(一)>
<一起学习C语言:初步进入编程世界(二)>
<一起学习C语言:初步进入编程世界(三)>
<一起学习C语言:C语言数据类型(一)>
<一起学习C语言:C语言数据类型(二)>
<一起学习C语言:C语言数据类型(三)>
<一起学习C语言:C语言基本语法(一)>
<一起学习C语言:C语言基本语法(二)>
<一起学习C语言:C语言基本语法(三)>
<一起学习C语言:C语言基本语法(四)>
<一起学习C语言:C语言基本语法(五)>
<一起学习C语言:C语言循环结构(一)>
<一起学习C语言:C语言循环结构(二)>
<一起学习C语言:C语言循环结构(三)>
<一起学习C语言:数组(一)>
<一起学习C语言:数组(二)>
<一起学习C语言:数组(三)>
<一起学习C语言:初谈指针(一)>
<一起学习C语言:初谈指针(二)>
<一起学习C语言:初谈指针(三)>
<一起学习C语言:函数(一)>
<一起学习C语言:函数(二)>
<一起学习C语言:函数(三)>
<一起学习C语言:函数(四)>