结构体(Structure)是C语言中的一种数据类型,用于将多个不同类型的数据组合在一起。结构体的定义使用关键字struct
,它在组织复杂数据时非常有用。
定义结构体
结构体的定义格式如下:
struct 结构体名称 { 数据类型 成员1; 数据类型 成员2; // 更多成员 };
示例:定义和使用结构体
定义结构体
以下是一个定义表示点(Point)的结构体的示例:
#include <stdio.h> // 定义结构体Point struct Point { int x; int y; };
声明和初始化结构体变量
#include <stdio.h> struct Point { int x; int y; }; int main() { // 声明结构体变量 struct Point p1; // 初始化结构体成员 p1.x = 10; p1.y = 20; // 输出结构体成员 printf("Point p1: (%d, %d)\n", p1.x, p1.y); // 使用结构体初始化列表进行初始化 struct Point p2 = {30, 40}; printf("Point p2: (%d, %d)\n", p2.x, p2.y); return 0; }
嵌套结构体
结构体可以包含其他结构体作为成员。例如:
#include <stdio.h> // 定义结构体 struct Point { int x; int y; }; struct Rectangle { struct Point top_left; struct Point bottom_right; }; int main() { // 初始化嵌套结构体 struct Rectangle rect = {{0, 10}, {10, 0}}; // 输出矩形的顶点坐标 printf("Top-left: (%d, %d)\n", rect.top_left.x, rect.top_left.y); printf("Bottom-right: (%d, %d)\n", rect.bottom_right.x, rect.bottom_right.y); return 0; }
结构体数组
可以声明结构体数组来存储多个结构体实例。例如:
#include <stdio.h> // 定义结构体 struct Point { int x; int y; }; int main() { // 声明结构体数组 struct Point points[3] = {{1, 2}, {3, 4}, {5, 6}}; // 输出结构体数组的元素 for (int i = 0; i < 3; i++) { printf("Point %d: (%d, %d)\n", i + 1, points[i].x, points[i].y); } return 0; }
结构体指针
可以使用结构体指针来访问和操作结构体数据。例如:
#include <stdio.h> // 定义结构体 struct Point { int x; int y; }; int main() { // 声明结构体变量 struct Point p = {10, 20}; // 声明指向结构体的指针 struct Point *ptr = &p; // 使用结构体指针访问成员 printf("Point: (%d, %d)\n", ptr->x, ptr->y); // 通过指针修改成员 ptr->x = 30; ptr->y = 40; printf("Modified Point: (%d, %d)\n", ptr->x, ptr->y); return 0; }
使用typedef
简化结构体
使用typedef
关键字可以为结构体类型创建一个别名,从而简化代码。例如:
#include <stdio.h> // 使用typedef定义结构体别名 typedef struct { int x; int y; } Point; int main() { // 使用结构体别名声明变量 Point p1 = {10, 20}; // 输出结构体成员 printf("Point p1: (%d, %d)\n", p1.x, p1.y); return 0; }
总结
结构体是C语言中非常重要的数据类型,可以帮助你组织和管理复杂的数据。通过定义结构体、声明结构体变量、使用结构体指针和typedef
,你可以高效地处理各种复杂的数据结构。