初始结构体

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

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

目录

🏡前言

🐰结构体的基础知识

🐰结构体的声明

🐰结构成员类型

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

🐰结构体成员访问

🐰结构体传参


🏡前言

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. }

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

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

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

相关文章
|
4月前
|
C语言
结构体变量的初始化
结构体变量的初始化。
28 3
|
4月前
|
C语言 C++
结构体变量的初始化和引用
结构体变量的初始化和引用
50 1
|
4月前
|
存储
关于结构体变量的初始化和引用
在编程中,结构体是一种复合数据类型,它允许我们将多个不同类型的数据项组合成一个单一的数据结构。通过定义结构体,我们可以创建具有多个属性的数据类型,以更好地组织和处理复杂的数据。本文将介绍结构体变量的初始化和引用方法,并附上相应的代码示例
39 1
|
存储 Linux C++
结构体类型的定义和初始化
结构体类型的定义和初始化
|
3月前
|
存储 编译器 C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
37 2
|
3月前
|
编译器 Linux C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
39 1
|
4月前
|
编译器 C语言
结构体定量初始化和引用
结构体定量初始化和引用
25 1
|
编译器 Linux C++
计算结构体的大小
计算结构体的大小
62 0
初始结构体
初始结构体
55 0