结构体
结构体
结构的基础知识
结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的额变量。
数组:
一组相同元素的集合
结构的声明
struct tag
{
member-list;
}variable-list;
结构体成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
结构体变量的定义和初始化
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 = { {'w',20,3.14},"张三",30,"20200534"};//结构体嵌套初始化
return 0;
}
结构体成员的访问
int main()
{
//s是局部变量
struct Stu s = { {'w',20,3.14},"张三",30,"20200534"};//嵌套初始化
//. -> 访问
printf("%c\n", s.sb.c);
printf("%s\n", s.id);
struct Stu* ps = &s;
printf("%c\n",(*ps).sb.c);
printf("%c\n", ps->sb.c);
return 0;
}
结构体传参
void print1(struct Stu t)
{
printf("%c %d %lf %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 %lf %s %d %s\n", ps->sb.c, ps->sb.s, ps->sb.d, ps->name, ps->age, ps->id);
};
int main()
{
//s是局部变量
struct Stu s = { {'w',20,3.14},"张三",30,"20200534" };//嵌套初始化
//写一个函数打印s的内容
print1(s);//传值调用 空间时间浪费
print2(&s);//传址调用 ps可改变s 优选print2
return 0;
}
上面的 print1 和 print2 函数哪个好些?
答案是:首选print2函数。
原因:
函数传参的时候,参数是需要压栈的。
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。
结论:
结构体传参的时候,要传结构体的地址。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 咕噜
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果