结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量;
struct B
{
char c;
short s;
double d;
};
struct Stu
{
//成员变量
struct B sb;
char name[20];//名字
int age;//年龄
char id[20];
}s1,s2;//s1和s2也是结构体变量
//s1,s2是全局变量
int main()
{
//s是局部变量
struct Stu s;//对象
return 0;
}
类型—>对象
int main()
{
//s是局部变量
struct Stu s = {{'w',20,3.14},"张三",30,2022};//对象
return 0;
}
int main()
{
//s是局部变量
struct Stu s = {{'w',20,3.14},"张三",30,2022};//对象
//. ->
//printf("%c\n",s.sb.c);
//printf("%s\n",s.id);
return 0;
}
struct Stu* ps = &s;
printf("%c\n",(*ps).sb.c);
pritnf("%c\n",ps->sb.c);
写一个函数打印s的内容
struct B
{
char c;
short s;
double d;
};
struct Stu
{
//成员变量
struct B sb;
char name[20];//名字
int age;//年龄
char id[20];
};
void print1(struct Stu t)
{
printf("%c %d %IF %s %d %s\n",t.sb.c,t.sb.s,t.sb.d,t.name,t.age,t.id);
}
void print2(struct Stu* ps)
{
printf("%c %d %If %s %d %s\n",ps->sb.c,ps->sb.s,ps->sb.d,ps->name,ps->age,ps->id);
}
int main()
{
struct Stu s = {{'w',20,3.14},"张三",30,2022};
print1(s);//(1)
print2(&s);//(2)
return 0;
}
传值调用(1)和传址调用(2)
首选(2),函数传参的时候,参数是需要压栈的,如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。
函数调用的参数压栈:
栈,是一种数据结构,先进的后出,后进的先出
函数传参的讲解:
int Add(int x,int y)
{
int z = 0;
z = x +y;
return z;
}
int main
{
int a - 3;
int b = 5;
int c = 0;
c = Add(a,b);
return 0;
}