目录
结构体概念:
结构体类型:
结构体变量的创建:
定义结构体变量的三种方式:
结构体变量的引用:
结构体变量的初始化:
结构体数组:
结构体数组定义:
结构体数组初始化:
结尾:下集预告
前往下集:
结构体概念:
C语言允许用户创建这样一个结构数据:它由多种类型的数据结合成一个整体,以便引用;这样一
整体被称为结构体。结构体中的数据相互关联,便于用户引用。
结构体类型:
结构体的一般形式如下:
struct 结构体名
{成员列表};
- 1.结构体的标志:struct, 表明这是一个结构体类型。
- 2.结构体的名称:用作结构体的标志,又称结构体标记。
- 3.成员列表:结构体的组成部分,其中的成员共同构成结构体。成员由成员类型(int 、char等)和名称(自己给它起的名字)构成。
注意:结构体的成员可以是结构体,也就是结构体内嵌结构体。
结构体变量的创建:
那么让我们先创建一个结构体出来看看:
struct student//结构体名
{
int num;//结构体成员
char name[20];
char sex;
int age;
float score;
char addr[30];
};
这里我们创建了一个结构体,但是其并没有储存任何数据,也就是没有太多意义。接下来我们需要对其进行初始化。
定义结构体变量的三种方式:
- 1.先声明结构体类型在定义变量名:如上我们已经定义了一个结构体类型:struct student,我们可以用它来定义变量。
struct student{ //结构体类型名
...
...
...
}student1, student2 //结构体变量名
- 2.在声明类型的同时定义变量:
struct 结构体名
{
成员表列
}变量名表列;
- 3.直接定义结构类型变量:即不出现结构体名
struct { 成员表列 }变量名表列;
但是这样会导致结构体只能使用一次。
结构体变量的引用:
知道结构体怎样创建后,我们需要了解一下结构体的变量如何引用:
这里我们需要先介绍一下”."成员运算符号,它在所有运算符号中优先等级最高。意思是找到结构体中的该成员。
- 1.不能将一个结构体变量作为一个整体输入和输出,我们只能对结构变量中的各个成员分别进行输入和输出。其方法为:
结构体变量名.成员名
stdent1.age
student2.name
//结合上面我们创建的结构变量
- 2.如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低的成员进行赋值或存取以及运算。例如:
strct date{
int month;
int day;
}brithday;
struct student
{
char name[20];
int age;
struct date birthday;
}student1;
//定义:
student1.brithday.month
- 3.可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
scanf("%d", &student1.num);// 输入 student1.num 的值 printf("%p", &student1);// 输出 student1 的首地址
但不能用以下语句整体读入结构体变量如:
scanf("%d,%s,%c,%d,%f,%s", &student1);
结构体变量的地址主要用于作函数参数,传递结构体的地址。
结构体变量的初始化:
结构体初始化主要是在对结构体进行定义时,对我们自己定义的结构体变量成员赋值。
struct student {
int num;
char nam[20];
char sex;
int age;
}wang1={10,"wang",'n',20};
结构体数组:
没错结构体也有数组!!当我们需要对一个类型的结构体进行多次使用时,我们可以用结构体数组来使代码的书写更加方便,提高代码的可读性。
结构体数组定义:
和普通数组的定义相似,结构体数组也是先声明单个数组元素的类型,然后表明其为数组。
- 1.间接定义,先定义单个结构体,再定义结构体:
struct student {
int num;
char nam[20];
char sex;
int age;
}wang1={10,"wang",'n',20};
struct student arr[3];
int main()
{
arr[1].age = 10;//定义
return 0;
}
- 当然我们还有另一种方式进行定义:直接定义:
struct student {
int num;
char nam[20];
char sex;
int age;
}arr2[3];
结构体数组初始化:
与其它数组初始化类似:
struct student {
int num;
char nam[20];
char sex;
int age;
}arr2[3] = {
{20,"asd",'n',50},
{100,"fgh",'a',100},
{200,"asd",'b',300}
};
结尾:下集预告
这篇文章就讲到这里下一篇我们将会讲述结构体指针的创建与应用,对于指针大家可以先看这篇文章进想了解:
[小白都爱的指针入门理解 ]
前往下集:
【结构体基础全家桶(2)结构体指针 】http://t.csdnimg.cn/hUCsb
愿你激流勇进之时,不忘孤芳自赏