C语言结构体超详细讲解
什么是结构体?
结构体是一种用户自定义的数据类型,它可以由一些基本类型的数据组成一个具有独立性的数据结构。它和数组的定义方式类似,都是用一个标识符来命名,并用大括号将组成这个结构体的数据类型和标识符列表括起来,中间用逗号隔开。例如:
struct Student {
char name[20];
int age;
float score;
};
上述代码定义了一个名为“Student”的结构体类型,它由三个成员组成:一个字符数组(名为“name”)、一个整型变量(名为“age”)、一个浮点型变量(名为“score”)。
结构体变量的定义和使用
结构体变量的定义和使用与其他变量类似,只不过需要在标识符前加上“结构体类型名”的前缀。例如:
struct Student stu;
strcpy(stu.name, "张三");
stu.age = 20;
stu.score = 86.5;
上述代码定义了一个名为“stu”的结构体变量,并对它的成员变量进行赋值。
结构体成员的访问
结构体的成员可以通过“.”(点)操作符来访问。例如:
printf("姓名:%s,年龄:%d,分数:%.2f", stu.name, stu.age, stu.score);
上述代码输出了结构体变量“stu”的三个成员的值。
结构体指针的定义和使用
结构体指针的定义和使用也与其他指针类似,只不过需要在指针变量前加上“struct”关键字和结构体类型名,并用“->”操作符来访问结构体成员。例如:
struct Student *p = &stu;
printf("姓名:%s,年龄:%d,分数:%.2f", p->name, p->age, p->score);
上述代码定义了一个名为“p”的结构体指针变量,并将其指向结构体变量“stu”,然后通过“->”操作符来访问结构体成员。
结构体作为函数的参数
结构体可以作为函数的参数进行传递。在函数中可以通过指针来访问结构体成员。例如:
void print(struct Student *s) {
printf("姓名:%s,年龄:%d,分数:%.2f", s->name, s->age, s->score);
}
print(&stu);
上述代码定义了一个名为“print”的函数,它接受一个指向结构体类型为“Student”的指针变量,并输出这个结构体变量的成员。
结构体的嵌套
结构体也可以嵌套在另一个结构体中。例如:
struct Date {
int year;
int month;
int day;
};
struct Student {
char name[20];
int age;
float score;
struct Date birthDate;
};
上述代码定义了一个名为“Date”的结构体类型和一个名为“Student”的结构体类型,其中“Student”类型的成员变量包括一个名为“birthDate”的“Date”类型变量。
示例
示例一
#include <stdio.h>
#include <string.h>
struct Student {
char name[20];
int age;
float score;
};
int main() {
struct Student stu;
strcpy(stu.name, "张三");
stu.age = 20;
stu.score = 86.5;
printf("姓名:%s,年龄:%d,分数:%.2f", stu.name, stu.age, stu.score);
return 0;
}
上述代码定义了一个名为“stu”的结构体变量,对其进行了赋值,并输出了它的三个成员的值。
示例二
#include <stdio.h>
#include <string.h>
struct Point {
int x;
int y;
};
struct Rectangle {
struct Point topLeft;
struct Point bottomRight;
};
int main() {
struct Rectangle rect;
rect.topLeft.x = 0;
rect.topLeft.y = 0;
rect.bottomRight.x = 100;
rect.bottomRight.y = 100;
printf("左上角:%d,%d,右下角:%d,%d", rect.topLeft.x, rect.topLeft.y, rect.bottomRight.x, rect.bottomRight.y);
return 0;
}
上述代码定义了一个名为“rect”的结构体变量,其中又包含了两个名为“topLeft”和“bottomRight”的结构体变量。可以看出,结构体的嵌套可以用来表示更为复杂的数据结构。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言结构体超详细讲解 - Python技术站