📜  C结构struct

📅  最后修改于: 2020-10-04 14:08:46             🧑  作者: Mango

在本教程中,您将学习C编程中的结构类型。您将借助示例学习定义和使用结构。

 

在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];

在这两种情况下,都会创建两个变量person1person2和具有20个类型为struct Person类型的元素的数组变量p


访问结构的成员

有两种类型的运算符用于访问结构的成员。

  1. . -会员运算符
  2. -> -结构指针运算符 (将在下一个教程中讨论)

假设您要访问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薪金来存储此信息。

    如果您需要存储多个人的信息怎么办?现在,您需要为每个人的每个信息创建不同的变量: name1citNo1salal1name2citNo2salal2等。

    更好的方法是使用单个名称“ Person结构来收集所有相关信息,并将其用于每个人。


    更多关于结构
    • 结构和指针
    • 将结构传递给函数