结构体
struct stu{
//成员变量
struct B A;///可嵌入
char name[20]://名字
int age;//年龄
char id[20];
}s1,s2;//s1和s2也是结构体变量
//s1,s2是全局变量
int main(){
//s是局部变量
struct stu s={{,,,},"mike",18,"333"};//对象
结构体内部成员的访问
使用的.和->,->用于指针
struct stu{
//成员变量
char name[20]://名字
int age;//年龄
char id[20];
}s1;
int main(){
printf("%d",s.age);
struct stu* ps = &s;//结构体指针
printf("%d\n",(*ps).age);
printf("%d\n",ps->s
return 0;
}
与函数
首选print2(下方实例)函数
函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大, 参数压栈
的的系统开销比较大,所以会导致 性能的下降。
结论:结构体传参的时候,要传结构体的地址。
#include <stdio.h>
#include <string.h>
struct stu {
char name[20];
int age;
char id[20];
}s = { "Mike",18,"1122" };
void print1(struct stu t) {
printf("%s,%d,%s\n", t.name, t.age, t.id);
}
void print2(struct stu* ps){
printf("%s,%d,%s\n",ps->name,ps->age,ps->id);
}
int main() {
//写一个函数打印s的内容
print1(s);//传值调用
print2(&s);//传地址调用,这两种有区别,第二种能修改s的值
return 0;
}
栈,大致了解
![](https://i-blog.csdnimg.cn/blog_migrate/4d60f0509e47f5eeab0ddf163193e005.png)
调试,先放这
![](https://i-blog.csdnimg.cn/blog_migrate/40aac2e6e0c2cbfa6aa95941ef389883.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1ff429326752fd0ae5166c2c6cfed85f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b52c80f8b7041554285773dd4b2c6d11.png)