大
中
小
C语言中结构体详解
2018-01-20
大家都知道学习嵌入式培训讲师东哥为大家带来关于:C语言中结构体详解,希望能帮助到更多的嵌入式学习者。
1 概述
C语言允许用户自己指定这样一种数据结构,它由不同类型的数据组合成一个整体,以便引用,这些组合在一个整体中的数据是互相联系的,这样的数据结构称为结构体,它相当于其它高级语言中记录。
声明一个结构休类型的一般形式如下:
struct 结构体名
{成员列表};
结构体名,用作结构体类型的标志,它又称 结构体标记,大括号内是该结构体中的各个成员,由它们组成一个结构体,对各成员都应进行类型声明如:
类型名 成员名;
也可以把 成员列表称为 域表,第一个成员也称为结构体中的一个域。成员名定名规则写变量名同。
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
2 定义结构体类型变量的方法
前面只是指定了一个结构体类型,它相当于一个模型,但其中并无具体数据,系统对之也不分配实际内存单元,为了能在程序中使用结构类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据,可以采取以下3种方法定义结构体类型变量。
(1)先声明结构体类型再定义变量名
如上面已定义了一个结构体类型 struct student,可以用它来定义变量。如:
struct student //结构体类型名
student1, student2//结构体变量名
定义了 student1, student2 为 struct student 类型的变量。
在定义了结构体变量后,系统会为之分配内存单元。例如 student1 和 student2在内存中各占59个字节。
应当注意,将一个变量定义为标准类型(基本数据类型)与定义为结构体类型不同之处在于后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如 struct student 类型),因为可以定义出许多种具体的结构体类型。而在定义变量为整形时,只需指定为 int 型即可。
(2)在声明类型的同时定义变量
例如:
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1, student2;
它的作用与第一种方法相同,即定义了两个 struct student 类型的变量 student1, student2 这种形式的定义的一般形式