////结构体成员的访问
//#include<stdio.h>
//typedef struct stu
//{
// //成员变量
// char name[20];
// short age;
// char tele[12];
// char sex[7];
//}Stu;
//void Print1(Stu tmp)//形参tmp//形参是实参的一份临时拷贝,且此块空间放到其他的位置上即tmp位置上(存在空间浪费)
//{
// printf("name:%s\n",tmp.name);
// printf("age:%d\n", tmp.age);
// printf("tele:%s\n", tmp.tele);
// printf("sex:%s\n", tmp.sex);
//}
//void Print2(Stu* ps)//指针ps//此处只需创建一个4字节(32位)或8字节(64位)的指针变量ps
//{
// printf("name:%s\n", ps->name);
// printf("age:%d\n", ps->age);
// printf("tele:%s\n", ps->tele);
// printf("sex:%s\n", ps->sex);
//}
//int main()
//{
// Stu s = { "李四",22,"15312312655","男" };
// //打印结构体数据
// //Print1和Print2哪个更好?
// // 答:Print2更好
// //理由:Print2的系统开销(地址占用)更小函数传参的时候,参数是需要压栈的。
// //如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。
// //压栈:向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素
// Print1(s);//实参s
// Print2(&s);//地址&s传参(传地址{无论结构体多大,我们只传4字节(32位)或8字节(64位)})到指针ps
// //Print1(s)和Print2(&s)为封装函数
// //封装函数:基础函数的封装就是将代码中需要的代码打包,并将这个包裹命名。
// // 在后续程序中,我们直接使用这个包裹,而不需要重新编写一段代码
// //这是一个简单的不传参数的函数。通过函数名加括号我们可以调用对应的函数。
// return 0;
//}
////结论:结构体传参的时候,需要传结构体的地址
//压栈