C 语言结构体(struct)
在本教程中,您将学习C语言编程中的结构类型。您将借助示例学习定义和使用结构。
在创建结构变量之前,需要定义其数据类型。要定义结构,请使用struct关键字。
struct的语法
struct structureName { dataType member1; dataType member2; ... };
这是一个实例:
struct Person { char name[50]; int citNo; float salary; };
在此,structPerson定义派生类型。现在,您可以创建这种类型的变量。
声明结构类型时,不会分配任何存储或内存。要分配给定结构类型的内存并使用它,我们需要创建变量。
这是我们创建结构变量的方法:
struct Person { char name[50]; int citNo; float salary; }; int main() { struct Person person1, person2, p[20]; return 0; }
创建结构变量的另一种方法是:
struct Person { char name[50]; int citNo; float salary; } person1, person2, p[20];
在这两种情况下,都会创建两个变量person1,person2和具有20个类型为structPerson类型的元素的数组变量p。
有两种类型的运算符用于访问结构的成员。
.-成员运算符
->-结构指针运算符(将在下一个教程中讨论)
假设,你要访问结构体person2的salary。可以使用一下操作方法。
person2.salary
// 程序相加两个距离(米-厘米) #include <stdio.h> struct Distance { int feet; float inch; } dist1, dist2, sum; int main() { printf("第一段距离\n"); printf("输入米: "); scanf("%d", &dist1.feet); printf("输入厘米: "); scanf("%f", &dist1.inch); printf("第二段距离\n"); printf("输入米: "); scanf("%d", &dist2.feet); printf("输入厘米: "); scanf("%f", &dist2.inch); // 米相加 sum.feet = dist1.feet + dist2.feet; // 厘米相加 sum.inch = dist1.inch + dist2.inch; // 如果厘米大于100,换算为米 while (sum.inch >= 100) { ++sum.feet; sum.inch = sum.inch - 100; } printf("距离总和 = %d米%.1f厘米", sum.feet, sum.inch); return 0; }
输出结果
我们使用typedef关键字为数据类型创建别名。它通常与结构一起使用,以简化声明变量的语法。
此代码
struct Distance{ int feet; float inch; }; int main() { struct Distance d1, d2; }
等同于
typedef struct Distance{ int feet; float inch; } distances; int main() { distances d1, d2; }
嵌套结构
您可以在C语言编程中的结构内创建结构。例如,
struct complex { int imag; float real; }; struct number { struct complex comp; int integers; } num1, num2;
假设,你要设置num2的变量imag值为11,怎么做呢?看下面示例:
num2.comp.imag = 11;
为什么在C中使用结构?
假设您要存储有关一个人的信息:他/她的姓名,身份证号和薪水。您可以创建不同的变量name,citNo和salary存储此信息。
如果您需要存储多个人的信息怎么办?现在,你需要为每个人每个信息创建不同的变量:name1,citNo1,salary1,name2,citNo2,salary2,等。
更好的方法是在单个名称Person结构下收集所有相关信息,并将其用于每个人。
更多关于结构
结构和指针
将结构传递给函数