当前位置: 首页 > news >正文

初始结构体

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

目录

🏡前言

🐰结构体的基础知识 

🐰结构体的声明

🐰结构成员类型

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

🐰结构体成员访问

🐰结构体传参


🏡前言

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

🐰结构体的基础知识 

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

🐰结构体的声明

struct tag//tag类型名
{member-list;//成员列表}variable-list;//变量列表

例如:
 

struct book
{char name[20];int price;   
}b3,b4;//全局变量
int main()
{struct book b1;//局部变量struct book b2;//局部变量
}

typedef重定义定义结构体

struct book
{char name[20];int price;   
}Book;//这里是类型不是变量,注意与上面的b3,b4的区别
int main()
{Book b1;//局部变量Book b2;//局部变量
}

🐰结构成员类型

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

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

struct book
{char name[20];int price;   
}b3,b4;//全局变量
int main()
{struct book b1={"c语言",45};//局部变量struct book b2={"数据结构",55};//局部变量//不按顺序初始化struct book b1={.price=45,.name="c语言"};//局部变量struct book b2={.price=55,.name="数据结构"};//局部变量
}

🐰结构体成员访问

struct book
{char name[20];int price;   
}b3,b4;//全局变量
void Print(struct book* p)
{printf("%s %d",p->name,p->price);
}
int main()
{struct book b1={"c语言",45};//局部变量struct book b2={"数据结构",55};//局部变量//不按顺序初始化struct book b1={.price=45,.name="c语言"};//局部变量struct book b2={.price=55,.name="数据结构"};//局部变量//结构体.结构体变量printf("%s %d",b1.name,b1.price);printf("%s %d",b2.name,b2.price);//结构体指针->结构体变量Print(&b1);
}

🐰结构体传参

传值调用:

struct book
{char name[20];int price;   
};
void Print(struct book bb1)
{printf("%s %d\n",bb1.name,bb1.price);   
}
int main()
{struct book b1;//局部变量Print(b1);
}

传址调用:
 

struct book
{char name[20];int price;   
};
void Print(struct book* bb1)
{printf("%s %d\n",bb1->name,bb1->price);   
}
int main()
{struct book b1;//局部变量Print(&b1);
}

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

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

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

http://www.lryc.cn/news/2885.html

相关文章:

  • English Learning - Day56 作业打卡 2023.2.10 周五
  • Python中五个不常见的隐晦用法小结
  • SharkTeam:Move合约开发与合约安全
  • 一篇文章学习什么是进程(万字解析,超多知识点)
  • 第01章_数据库概述
  • 我所理解的高通UEFI之display的流程和移植
  • iozone -a fsync: I/O error
  • Element UI框架学习篇(五)
  • SpringBoot 全局异常处理用法及原理
  • 浏览器中HTTP请求流程是如何处理的
  • 【Pytorch项目实战】之语义分割:U-Net、UNet++、U2Net
  • 七、插件机制
  • kmp算法
  • 【Python】正则表达式简单教程
  • SAP ABAP Odata
  • Android native ASAN 排查内存泄漏
  • Django项目开发
  • Debezium系列之:深入理解Debezium Server和Debezium Server实际应用案例详解
  • IDE2022源码编译tomcat
  • 214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧
  • 数据库范式
  • CUDA中的底层驱动API
  • 【博客616】prometheus staleness对PromQL查询的影响
  • 多传感器融合定位十三-基于图优化的建图方法其二
  • linux 服务器线上问题故障排查
  • Sandman:一款基于NTP协议的红队后门研究工具
  • 【SSL/TLS】准备工作:HTTPS服务器部署:Nginx部署
  • 微搭低代码从入门到精通11-数据模型
  • 【算法基础】前缀和与差分
  • LTD212次升级 | 官网社区支持PC端展示 • 官网新增证件查询应用,支持条形码扫码查询