Skip to content

Latest commit

 

History

History
228 lines (159 loc) · 4.04 KB

File metadata and controls

228 lines (159 loc) · 4.04 KB

结构

原文: https://www.programiz.com/c-programming/c-structures

在本教程中,您将学习 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. -> - 结构指针运算符(将在下一个教程中讨论)

假设您要访问person2salary。 这是您的操作方法。

person2.salary

示例:相加两个距离

// 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;
}

输出

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 中使用结构?

假设您要存储有关一个人的信息:他/她的姓名,公民编号和薪水。 您可以创建不同的变量namecitNosalary来存储此信息。

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

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


关于结构的更多