创建结构体:
//创建一个学生类结构体
struct Stu
{
char name[20];//名字
int age;//年龄
char id[20];//学号
};
初始化结构体:
struct Stu s = { "张三",20,"1906098765" };
结构体的两种调用方式:传值调用和传址调用;
传值调用:
void print1(struct Stu m) {
printf("%s %d %s\n", m.name, m.age, m.id);
}
int main() {
struct Stu s = { "张三",20,"1906098765" };
print1(s);
return 0;
}
传址调用:
void print2(struct Stu* pm) {
printf("%s %d %s\n", pm->name, pm->age, pm->id);
}
int main() {
struct Stu s = { "张三",20,"1906098765" };
struct Stu* ps = &s;
print2(ps);
return 0;
}
两种调用方式谁更优:传址调用,因为函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈时系统开销比较大,所以会导致系统性能下降。因此结构体传参的时候,要传结构体的地址。