结构和其他数据形式
结构体
结构体是C语言中组织相关数据的核心机制,在Python-C互操作中用于:
- 定义复杂的数据结构
- 与Python类进行映射
- 高效传递多个相关数据
基本结构体定义
// 定义结构体
struct Person {
char name[50];
int age;
float height;
};
// 使用typedef简化
typedef struct {
char name[50];
int age;
float height;
} Person;
// 声明变量
Person p1;
Person *p2 = malloc(sizeof(Person));
结构体初始化和访问
// 初始化
Person p1 = {"张三", 25, 175.5};
Person p2 = {.name = "李四", .age = 30, .height = 180.0};
// 访问成员
printf("姓名: %s\n", p1.name);
printf("年龄: %d\n", p1.age);
// 指针访问
Person *ptr = &p1;
printf("身高: %.1f\n", ptr->height);
结构体嵌套
typedef struct {
int year;
int month;
int day;
} Date;
typedef struct {
char name[50];
Date birthdate;
float salary;
} Employee;
Employee emp = {
.name = "王五",
.birthdate = {1990, 5, 15},
.salary = 8000.0
};
联合体
联合体允许在同一内存位置存储不同的数据类型,在Python-C互操作中用于:
- 节省内存空间
- 实现变体类型
- 处理网络协议数据