#include <stdio.h>
struct S
{
char subject[20];
int points;
};
struct Stu
{
struct S score;
char name[20];
int age;
char id[20];
};
void print1(struct Stu p)
{
printf("%s %d %s %s %d \n", p.name, p.age, p.id, p.score.subject, p.score.points);
}
void print2(struct Stu * ps)
{
printf("%s %d %s %s %d \n", ps->name,ps->age,ps->id,ps->score.subject,ps->score.points);
}
int main()
{
struct Stu s = { {"math",90},"Michael",23,"2021202120" };
// 打印 s
print1(s); //传值调用
print2(&s); //传址调用
return 0;
}
print1 or print2 ?
首选 print2 ,原因:函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。
结论:结构体传参的时候,要传结构体的地址。
压栈: