C 结构体使用攻略
简介
C 结构体是一种用户自定义的数据类型,用于存储多个不同类型的数据项。可以将结构体理解为一个复合数据类型,其内部成员可以是不同的类型,包括整型、浮点型、字符型、指针等等。C结构体的声明方式类似于定义变量,语法为:
struct 结构体名称 {
类型1 成员名称1;
类型2 成员名称2;
...
};
定义结构体
定义一个结构体需要指定结构体的名称,以及结构体成员的类型和名称。下面是一个示例:
struct Person {
char name[30];
int age;
float height;
};
在这个示例中,我们创建了一个名为Person的结构体,其中包含三个成员变量,分别是name(字符串类型)、age(整型)和height(浮点型)。注意,结构体中的成员变量占据的内存空间是连续的,这是C语言中结构体的特性之一。
访问结构体成员
在访问结构体成员时,需要使用“.”(点)运算符。例如,要访问Person结构体中的name成员,可以使用以下语法:
struct Person person;
person.age = 20;
在这个示例中,我们创建了一个Person结构体类型的变量person,并将其age成员变量设置为20。
结构体的初始化
在定义结构体变量时,可以直接对其进行初始化。以下代码示例展示了如何初始化Person结构体变量:
struct Person person = {"John Smith", 30, 1.82}
结构体中的指针成员
结构体中的成员可以是指针,例如:
struct Person {
char name[30];
int age;
float *height;
};
在这个示例中,我们将height成员变量设置为指向浮点型数据的指针。然后,可以为height指针成员变量分配内存空间,例如:
struct Person person;
float *height_ptr = (float*) malloc(sizeof(float));
*height_ptr = 1.82;
person.height = height_ptr;
在这个示例中,我们使用malloc函数分配了一个浮点型变量的内存空间。然后,将其赋值给一个名为height_ptr的浮点型指针变量,并将1.82赋值给该内存空间。最后,我们将height_ptr的值赋值给person结构体的height成员变量。
示例1
下面是一个示例程序,使用结构体存储多个学生的信息并输出:
#include <stdio.h>
// 定义结构体类型
struct Student {
char name[30];
int score;
};
int main() {
// 创建结构体数组并初始化
struct Student students[3] = {
{"Tom", 80},
{"Jerry", 75},
{"John", 92}
};
// 遍历结构体数组并输出
for (int i = 0; i < 3; i++) {
printf("%s's score is %d\n", students[i].name, students[i].score);
}
return 0;
}
示例2
下面是一个示例程序,演示如何使用结构体来模拟复数的运算:
#include <stdio.h>
// 定义结构体类型
struct Complex {
double real;
double imag;
};
// 定义复数加法函数
struct Complex add(struct Complex c1, struct Complex c2) {
struct Complex result;
result.real = c1.real + c2.real;
result.imag = c1.imag + c2.imag;
return result;
}
int main() {
// 初始化两个复数
struct Complex c1 = {1.0, 2.0};
struct Complex c2 = {2.5, 3.5};
// 调用加法函数并输出结果
struct Complex result = add(c1, c2);
printf("The result is %lf + %lfi\n", result.real, result.imag);
return 0;
}
在这个示例中,我们定义了一个名为Complex的结构体,用于表示复数。然后,我们定义了一个复数加法函数add,该函数接受两个Complex类型的参数,并返回一个Complex类型的结果。最后,我们初始化了两个复数,并将它们作为参数传递给add函数,并输出了结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C 结构体 - Python技术站