结构体简介
结构体是一种数据类型,它允许我们将不同类型的数据组合在一起。这种数据类型在C语言中非常常见,也被广泛应用于其他编程语言。
结构体类型的定义
结构体类型的定义通常如下所示:
struct TypeName {
dataType1 member1;
dataType2 member2;
...
};
其中,TypeName
是你为结构体类型定义的名称,dataType1
和dataType2
是成员变量的数据类型,member1
和member2
是成员变量的名称。
例如,我们可以定义一个名为Person
的结构体类型,包含name
(字符串类型)和age
(整型)两个成员变量:
struct Person {
char name[50];
int age;
};
结构体变量的创建和初始化
定义了结构体类型后,我们就可以创建该类型的变量,并进行初始化。例如:
struct Person p1 = {"Alice", 20};
这行代码创建了一个Person
类型的变量p1
,并将其name
成员初始化为"Alice",age
成员初始化为20。
结构体中的内存对齐
结构体中的内存对齐是一个重要的概念。为了提高内存访问效率,编译器会按照一定的规则对结构体的成员进行内存对齐。这可能会导致结构体的实际大小大于其成员大小之和。
例如,考虑以下结构体:
struct Example {
char a;
int b;
char c;
};
在32位系统中,char
类型占1字节,int
类型占4字节。尽管a
、b
和c
的总大小是6字节,但由于内存对齐,Example
结构体的大小实际上是12字节。这是因为b
成员需要对齐到4字节边界,c
成员需要对齐到下一个4字节边界。
内存对齐的具体规则可能因编译器和硬件架构的不同而不同。在某些情况下,我们可以使用编译器指令来控制内存对齐行为。