C 结构体

本文通过实例介绍了 C 语言中的如何定义和使用结构体类型。

在 C 语言中,结构体定义了一种新的组合的数据类型,它是多个数据的集合。

如何定义结构?

在 C 语言中,我们使用 struct 关键字定义结构体。

结构体的语法

struct structureName {
  dataType member1;
  dataType member2;
  ...
};

下面是一个例子:

struct Person {
  char name[50];
  int citNo;
  float salary;
};

在这里, struct Person 定义了派生类型。现在,您可以创建这种类型的变量。

创建结构变量

声明结构类型时,不会分配存储或内存。结构体只是相当于声明了一种新的数据类型,而不是声明了一个变量。

要使用结构体,我们就要创建结构体类型的变量。如下:

struct Person {
  // code
};

int main() {
  struct Person person1, person2, p[20];
  return 0;
}

创建结构变量的另一种方法是:

struct Person {
   // code
} person1, person2, p[20];

上面两种方法中,都创建了两个普通变量 person1, person2, 和一个容纳 20 个元素的数组变量 p

访问结构的成员

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

如果你想访问 person2salary 信息,请使用:person2.salary

示例:C 结构体

#include <stdio.h>
#include <string.h>

// create struct with person1 variable
struct Person {
  char name[50];
  int citNo;
  float salary;
} person1;

int main() {

  // assign value to name of person1
  strcpy(person1.name, "George Orwell");

  // assign values to other person1 variables
  person1.citNo = 1984;
  person1. salary = 2500;

  // print struct variables
  printf("Name: %s\n", person1.name);
  printf("Citizenship No.: %d\n", person1.citNo);
  printf("Salary: %.2f", person1.salary);

  return 0;
}

输出

Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

在这个程序中,我们创建了结构体 Person。并创建了一个 Person 类型的变量 person1

main() 方法中,我们给 person1 中的各个变量进行了赋值,如下:

strcpy(person1.name, "George Orwell");
person1.citNo = 1984;
person1. salary = 2500;

请注意,我们使用 strcpy()person1.name 赋值,因为 person1.name 是一个字符串。

最后,我们输出了 person1 中的数据。

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;

如果你想将 num2imag 的值设置为 11,请使用: num2.comp.imag = 11;

为什么使用结构体?

使用结构体是为了定义更复杂的数据结构类型。

假设您想存储一个人的信息:他/她的姓名、公民号码和工资。在不使用结构体的时候,您可以创建不同的变量存储这些信息,比如:name, cityNo, salary

如果需要存储多人的信息怎么办?若还是使用变量,则可能引起变量爆炸。

更好的方法是定义一个 Person 结构体。这样将一个人的信息都放在一个变量中。它能极大的简化代码。