ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 结构 > 原文: [https://www.programiz.com/c-programming/c-structures](https://www.programiz.com/c-programming/c-structures) #### 在本教程中,您将学习 C 编程中的结构类型。 您将借助示例学习定义和使用结构。 在 C 编程中,结构(或结构)是单个名称下的变量(可以是不同类型)的集合。 * * * ## 如何定义结构? 在创建结构变量之前,需要定义其数据类型。 要定义结构,请使用`struct`关键字。 ### `struct`的语法 ```c struct structureName { dataType member1; dataType member2; ... }; ``` 这是一个例子: ```c struct Person { char name[50]; int citNo; float salary; }; ``` 在此,定义派生类型`struct Person`。 现在,您可以创建这种类型的变量。 * * * ## 创建结构变量 声明结构类型时,不会分配任何存储或内存。 要分配给定结构类型的内存并使用它,我们需要创建变量。 这是我们创建结构变量的方法: ```c struct Person { char name[50]; int citNo; float salary; }; int main() { struct Person person1, person2, p[20]; return 0; } ``` 创建结构变量的另一种方法是: ```c struct Person { char name[50]; int citNo; float salary; } person1, person2, p[20]; ``` 在这两种情况下,都会创建两个变量`person1`,`person2`和具有 20 个类型为`struct Person`的元素的数组变量`p`。 * * * ## 访问结构的成员 有两种类型的运算符用于访问结构的成员。 1. `.` - 成员运算符 2. `->` - 结构指针运算符(将在下一个教程中讨论) 假设您要访问`person2`的`salary`。 这是您的操作方法。 ```c person2.salary ``` * * * ### 示例:相加两个距离 ```c // Program to add two distances (feet-inch) #include <stdio.h> struct Distance { int feet; float inch; } dist1, dist2, sum; int main() { printf("1st distance\n"); printf("Enter feet: "); scanf("%d", &dist1.feet); printf("Enter inch: "); scanf("%f", &dist1.inch); printf("2nd distance\n"); printf("Enter feet: "); scanf("%d", &dist2.feet); printf("Enter inch: "); scanf("%f", &dist2.inch); // adding feet sum.feet = dist1.feet + dist2.feet; // adding inches sum.inch = dist1.inch + dist2.inch; // changing to feet if inch is greater than 12 while (sum.inch >= 12) { ++sum.feet; sum.inch = sum.inch - 12; } printf("Sum of distances = %d\'-%.1f\"", sum.feet, sum.inch); return 0; } ``` **输出** ```c 1st distance Enter feet: 12 Enter inch: 7.9 2nd distance Enter feet: 2 Enter inch: 9.8 Sum of distances = 15'-5.7" ``` * * * ### 关键字`typedef` 我们使用`typedef`关键字为数据类型创建别名。 它通常与结构一起使用,以简化声明变量的语法。 **此代码** ```c struct Distance{ int feet; float inch; }; int main() { struct Distance d1, d2; } ``` **等同于** ```c typedef struct Distance{ int feet; float inch; } distances; int main() { distances d1, d2; } ``` * * * ## 嵌套结构 您可以在 C 编程中的结构内创建结构。 例如, ```c struct complex { int imag; float real; }; struct number { struct complex comp; int integers; } num1, num2; ``` 假设您要将`num2`变量的`imag`设置为 11,这是如何实现的: ```c num2.comp.imag = 11; ``` * * * ## 为什么在 C 中使用结构? 假设您要存储有关一个人的信息:他/她的姓名,公民编号和薪水。 您可以创建不同的变量`name`,`citNo`和`salary`来存储此信息。 如果您需要存储多个人的信息怎么办? 现在,您需要为每个人的每个信息创建不同的变量:`name1`,`citNo1`,`salary1`,`name2`,`citNo2`,`salary2`等。 更好的方法是使用单个名称`Person`结构收集所有相关信息,并将其用于每个人。 * * * ## 关于结构的更多 * [结构和指针](/c-programming/c-structures-pointers) * [将结构传递给函数](/c-programming/c-structure-function)