C语言,结构体
解决参数过多的情况。一般传参数超4个就要考虑使用结构体。
他的本质是在内存区,截取一段,用于存储变量。
语法
struct 学生 // 类型是学生
{
char 姓名[50]; // 8位,-128~127
unsigned int 年龄 ;
char 班级[50];
} 学生1 = {"小红", 18, 大学}; // 直接声明一个变量,并且初始化
union 串口
{
学生 stu;
char 提取[104];
} 串口3;
串口3.stu = 学生1; // 用于内存转换
char[ ] 编码 = 串口3.提取[0]; // 用于内存转换
链表
结构体内,可以放任何类型。
最后一个成员,用自己的类型指针。 // 这样可以像链表一样串起来。指针指向下一个自己
结构体方法
#include <stdio.h>
// 定义结构体,包含函数指针
struct Calculator {
int a;
int b;
int (*add)(struct Calculator*); // 1只声明方法类型
int (*multiply)(struct Calculator*);
};// 实际的函数实现
int add_impl(struct Calculator* calc) { // 2定义方法体
return calc->a + calc->b;
}int multiply_impl(struct Calculator* calc) {
return calc->a * calc->b;
}// 初始化结构体的"方法"
void init_calculator(struct Calculator* calc, int x, int y) {
calc->a = x;
calc->b = y;
calc->add = add_impl; // 3绑定方法
calc->multiply = multiply_impl;
}int main() {
struct Calculator calc;
init_calculator(&calc, 5, 3);
printf("加法结果: %d\n", calc.add(&calc)); // 输出: 8
printf("乘法结果: %d\n", calc.multiply(&calc)); // 输出: 15
return 0;
}