在C编程中,结构(或结构)是单个名称下的变量(可以是不同类型)的集合。
如何定义结构?
在创建结构变量之前,需要定义其数据类型。要定义结构,请使用struct
关键字。
struct的语法
struct structureName
{
dataType member1;
dataType member2;
...
};
这是一个例子:
struct Person
{
char name[50];
int citNo;
float salary;
};
在此,定义派生类型struct Person
。现在,您可以创建此类型的变量。
创建结构变量
声明结构类型时,不会分配任何存储或内存。要分配给定结构类型的内存并使用它,我们需要创建变量。
这是我们创建结构变量的方法:
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个类型为struct Person
类型的元素的数组变量p 。
访问结构的成员
有两种类型的运算符用于访问结构的成员。
.
-会员运算符->
-结构指针运算符 (将在下一个教程中讨论)
假设您要访问person2的薪水 。这是您的操作方法。
person2.salary
示例:增加两个距离
// Program to add two distances (feet-inch)
#include
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;
}
输出
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
关键字为数据类型创建别名。它通常与结构一起使用,以简化声明变量的语法。
此代码
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中使用结构?
假设您要存储有关一个人的信息:他/她的姓名,公民编号和薪水。您可以创建不同的变量名称 , citNo和薪金来存储此信息。
如果您需要存储多个人的信息怎么办?现在,您需要为每个人的每个信息创建不同的变量: name1 , citNo1 , salal1 , name2 , citNo2 , salal2等。
更好的方法是使用单个名称“ Person
结构来收集所有相关信息,并将其用于每个人。
更多关于结构
- 结构和指针
- 将结构传递给函数