C结构
C 结构
在本教程中,您将通过示例了解 C 编程中的结构类型。
在 C 编程中,结构(或结构)是一个名称下的变量(可以是不同类型)的集合。
定义结构
在创建结构变量之前,您需要定义其数据类型。要定义一个结构,struct
使用了关键字。
结构的语法
struct structureName {
dataType member1;
dataType member2;
...
};
例如,
struct Person {
char name[50];
int citNo;
float salary;
};
这里,一个派生类型 struct Person
被定义为。现在,您可以创建这种类型的变量了。
创建结构变量
当 struct
声明类型,不分配存储或内存。要分配给定结构类型的内存并使用它,我们需要创建变量。
下面是我们如何创建结构变量:
struct Person {
// code
};
int main() {
struct Person person1, person2, p[20];
return 0;
}
另一种创建 struct
的方法 变量是:
struct Person {
// code
} person1, person2, p[20];
在这两种情况下,
- person1 和 person2 是
struct Person
变量 - p[] 是
struct Person
大小为 20 的数组。
访问结构的成员
有两种类型的运算符用于访问结构的成员。
.
- 会员运营商->
- 结构指针运算符(将在下一个教程中讨论)
假设,您想要访问 salary person2 .这是你可以做到的。
person2.salary
示例 1: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
在这个程序中,我们创建了一个 struct
命名为 Person
.我们还创建了一个Person
的变量 命名为 person1 .
在 main()
,我们已经为 Person
中定义的变量赋值 对于 person1 对象。
strcpy(person1.name, "George Orwell");
person1.citNo = 1984;
person1. salary = 2500;
请注意,我们使用了 strcpy()
将值分配给 person1.name 的函数 .
这是因为 name 是 char
数组(C 字符串),我们不能使用赋值运算符 =
在我们声明字符串之后使用它。
最后,我们打印出person1的数据 .
关键字类型定义
我们使用 typedef
关键字为数据类型创建别名。它通常与结构一起使用,以简化声明变量的语法。
比如我们看下面的代码:
struct Distance{
int feet;
float inch;
};
int main() {
struct Distance d1, d2;
}
我们可以使用 typedef
用简化的语法编写等效代码:
typedef struct Distance {
int feet;
float inch;
} distances;
int main() {
distances d1, d2;
}
示例 2:C++ 类型定义
#include <stdio.h>
#include <string.h>
// struct with typedef person
typedef struct Person {
char name[50];
int citNo;
float salary;
} person;
int main() {
// create Person variable
person p1;
// assign value to name of p1
strcpy(p1.name, "George Orwell");
// assign values to other p1 variables
p1.citNo = 1984;
p1. salary = 2500;
// print struct variables
printf("Name: %s\n", p1.name);
printf("Citizenship No.: %d\n", p1.citNo);
printf("Salary: %.2f", p1.salary);
return 0;
}
输出
Name: George Orwell Citizenship No.: 1984 Salary: 2500.00
在这里,我们使用了 typedef
使用 Person
创建别名 person
的结构 .
// struct with typedef person
typedef struct Person {
// code
} person;
现在,我们可以简单地声明一个 Person
使用 person
的变量 别名:
// equivalent to struct Person p1
person p1;
嵌套结构
您可以在 C 编程中的结构内创建结构。例如,
struct complex {
int imag;
float real;
};
struct number {
struct complex comp;
int integers;
} num1, num2;
假设,你想设置 imag num2 个 可变为 11 .你可以这样做:
num2.comp.imag = 11;
示例 3:C++ 嵌套结构
#include <stdio.h>
struct complex {
int imag;
float real;
};
struct number {
struct complex comp;
int integer;
} num1;
int main() {
// initialize complex variables
num1.comp.imag = 11;
num1.comp.real = 5.25;
// initialize number variable
num1.integer = 6;
// print struct variables
printf("Imaginary Part: %d\n", num1.comp.imag);
printf("Real Part: %.2f\n", num1.comp.real);
printf("Integer: %d", num1.integer);
return 0;
}
输出
Imaginary Part: 11 Real Part: 5.25 Integer: 6
为什么在 C 中使用结构?
假设您想存储一个人的信息:他/她的姓名、公民号码和薪水。您可以创建不同的变量 name , citNo 和薪水 来存储这些信息。
如果您需要存储多个人的信息怎么办?现在,您需要为每个人的每个信息创建不同的变量:name1 , citNo1 , 薪水1 , name2 , citNo2 , salary2 等。
更好的方法是在一个名称 Person
下收集所有相关信息 构建并为每个人使用它。
更多关于结构
- 结构和指针
- 将结构传递给函数
C语言