C语言全面梳理结构体知识点
什么是结构体?
结构体是一种自定义的数据类型,它可以包含多个不同类型的成员变量,并且这些成员变量可以通过一个变量名来访问。结构体的定义需要使用关键字struct
,并且需要指定结构体的类型名和成员变量。例如:
struct Person {
char name[20];
int age;
float height;
};
以上代码就定义了一个名为Person
的结构体类型,并且它包含了三个成员变量:name
、age
、height
。
如何使用结构体?
定义好了结构体之后,我们可以通过一个变量来实例化它,并且访问它的成员变量。例如:
struct Person tom;
strcpy(tom.name, "Tom");
tom.age = 18;
tom.height = 1.75;
以上代码就创建了一个名为tom
的结构体变量,并且给它的成员变量赋予了初始值。
另外一个是通过指针来使用结构体,例如:
struct Person *pTom = &tom;
printf("%s is %d years old and %.2f meters tall.\n", pTom->name, pTom->age, pTom->height);
以上代码中,我们首先创建了一个指向tom
结构体的指针pTom
,然后通过指针来访问结构体tom
的成员变量。
结构体的高级用法
结构体不仅仅可以包含基本类型的成员变量,还可以包含指向其他结构体的指针、数组等复杂类型的成员变量,例如:
struct Node {
int value;
struct Node *next;
};
以上代码定义了一个包含值和指向下一个节点的指针的结构体。这种定义方式可以用于链表等数据结构的实现。
另外,为了方便结构体的使用,还可以定义结构体类型的别名,例如:
typedef struct {
int x;
int y;
} Point;
以上代码定义了一个名为Point
的结构体类型,它具有x
和y
两个成员变量。其中,typedef
关键字用于给结构体类型定义别名。
结构体的大小
为了便于内存分配和优化,结构体的大小是需要考虑的。可以通过sizeof
运算符来获取一个结构体所占用的字节数,例如:
printf("size of Person: %d bytes.\n", sizeof(struct Person));
以上代码可以输出Person
结构体类型所占用的字节数,不同的结构体类型大小可能会有所不同。
示例说明
下面展示两个示例:
示例一
定义一个Student
结构体类型,包含姓名、年龄、分数三个成员变量。实例化Student
结构体,并输出实例的成员变量。
#include <stdio.h>
struct Student {
char name[20];
int age;
float score;
};
int main() {
struct Student stu = {"Tom", 18, 90.5};
printf("name: %s, age: %d, score: %.2f\n", stu.name, stu.age, stu.score);
return 0;
}
运行结果:
name: Tom, age: 18, score: 90.50
示例二
定义一个Rectangle
结构体类型,包含左上角点和右下角点的坐标。实例化Rectangle
结构体,并输出实例的成员变量。
#include <stdio.h>
struct Point {
int x;
int y;
};
struct Rectangle {
struct Point topLeft;
struct Point bottomRight;
};
int main() {
struct Rectangle rect = {{10, 10}, {20, 20}};
printf("topLeft: (%d, %d), bottomRight: (%d, %d)\n", rect.topLeft.x, rect.topLeft.y, rect.bottomRight.x, rect.bottomRight.y);
return 0;
}
运行结果:
topLeft: (10, 10), bottomRight: (20, 20)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言全面梳理结构体知识点 - Python技术站