初始结构体

简介: 🏡前言🐰结构体的基础知识 🐰结构体的声明🐰结构成员类型🐰结构体变量的定义和初始化🐰结构体成员访问🐰结构体传参

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🏡前言

🐰结构体的基础知识

🐰结构体的声明

🐰结构成员类型

🐰结构体变量的定义和初始化

🐰结构体成员访问

🐰结构体传参


🏡前言

c语言提供了内置类型,如char,short,int,long,long long,float,double类型。显然这些简单的类型不能表示复杂的情况,为了表示复杂对象C语言就引进了新的类型即结构体类型。

🐰结构体的基础知识

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

🐰结构体的声明

1. struct tag//tag类型名
2. {
3.     member-list;//成员列表
4. 
5.  }variable-list;//变量列表

例如:

 

1. struct book
2. {
3. char name[20];
4. int price;   
5. }b3,b4;//全局变量
6. int main()
7. {
8. struct book b1;//局部变量
9. struct book b2;//局部变量
10. }

typedef重定义定义结构体

1. struct book
2. {
3. char name[20];
4. int price;   
5. }Book;//这里是类型不是变量,注意与上面的b3,b4的区别
6. int main()
7. {
8.     Book b1;//局部变量
9.     Book b2;//局部变量
10. }

🐰结构成员类型

结构的成员可以是标量、数组、指针,甚至其他结构体

🐰结构体变量的定义和初始化

1. struct book
2. {
3. char name[20];
4. int price;   
5. }b3,b4;//全局变量
6. int main()
7. {
8. struct book b1={"c语言",45};//局部变量
9. struct book b2={"数据结构",55};//局部变量
10. //不按顺序初始化
11. struct book b1={.price=45,.name="c语言"};//局部变量
12. struct book b2={.price=55,.name="数据结构"};//局部变量
13. }

🐰结构体成员访问

1. struct book
2. {
3. char name[20];
4. int price;   
5. }b3,b4;//全局变量
6. void Print(struct book* p)
7. {
8. printf("%s %d",p->name,p->price);
9. }
10. int main()
11. {
12. struct book b1={"c语言",45};//局部变量
13. struct book b2={"数据结构",55};//局部变量
14. //不按顺序初始化
15. struct book b1={.price=45,.name="c语言"};//局部变量
16. struct book b2={.price=55,.name="数据结构"};//局部变量
17. 
18. //结构体.结构体变量
19. printf("%s %d",b1.name,b1.price);
20. printf("%s %d",b2.name,b2.price);
21. //结构体指针->结构体变量
22. Print(&b1);
23. }

🐰结构体传参

传值调用:

1. struct book
2. {
3. char name[20];
4. int price;   
5. };
6. void Print(struct book bb1)
7. {
8. printf("%s %d\n",bb1.name,bb1.price);   
9. }
10. int main()
11. {
12. struct book b1;//局部变量
13. Print(b1);
14. }

传址调用:

 

1. struct book
2. {
3. char name[20];
4. int price;   
5. };
6. void Print(struct book* bb1)
7. {
8. printf("%s %d\n",bb1->name,bb1->price);   
9. }
10. int main()
11. {
12. struct book b1;//局部变量
13. Print(&b1);
14. }

这里看出来,传址的效率更高,因为函数传参的时候是需要压栈的。如果传递一个结构对象的时候,结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以导致性能下降。

总结:        
结构体传参的时候,要传结构体的地址

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸    

相关文章
|
6月前
|
C语言
结构体变量的初始化
结构体变量的初始化。
39 3
|
存储 Linux C++
结构体类型的定义和初始化
结构体类型的定义和初始化
|
26天前
|
存储 NoSQL 编译器
如何检查结构体的对齐情况
在C/C++中,结构体的对齐情况会影响内存布局和访问效率。可以通过以下方法检查结构体的对齐情况:1. 使用 `sizeof` 操作符获取结构体大小;2. 使用 ` offsetof` 宏获取成员偏移量;3. 编译器提供的对齐属性或指令。
|
5月前
|
存储 编译器 C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
60 2
|
5月前
|
编译器 Linux C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
52 1
|
6月前
|
编译器 C语言
结构体定量初始化和引用
结构体定量初始化和引用
35 1
|
编译器 Linux C++
计算结构体的大小
计算结构体的大小
71 0
初始结构体
初始结构体
64 0
指针的介绍,定义,初始化
每个变量都有自己的地址,地址也是数据,就用地址类型的变量来装,地址类型就叫做指针类型,即指针类型定义的变量就是专门装地址的。
142 0