【C 语言基础】结构体的使用,rabbitmq的工作原理

本文介绍了C语言中结构体的定义、初始化、成员访问以及结构体作为函数参数的传值与传址方式。通过实例展示了如何通过指针访问结构体成员,并强调了传址方式在处理大型结构体时的效率优势。

类型2:

struct stu

{

char name[20];

int age;

}s1,s2;//定义全局变量s1,s2

2. 结构体初始化


看这段代码

struct book

{

float height;

char name[20];

}b;

struct stu

{

char name[20];

int age;

char id[20];

struct book b;

};

int main()

{

//初始化时,其实是和数组初始化一样,用大括号,里面放上初始化的值。若结构体里面包含结构体,则大括号里面 //在放一个大括号,里面放内部结构体初始化的值

struct stu a={“bobo”,18,“2021520”,{15.8,“free”}};

}

3. 结构体成员访问


[

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

]( )介绍

  1. 结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数,如:m.n(m为结构体变量,n为结构体中你想要访问的成员变量)
  1. 指向一个结构体的指针访问指向变量的成员是通过操作符(->)访问的。 如:m->n(m为指向一个结构体的指针,n为结构体中你想要访问的成员变量),也可以(*m).n

struct book

{

float height;

char name[20];

}b;

struct stu

{

char name[20];

int age;

char id[20];

struct book b;

};

int main()

{

struct stu a={“bobo”,18,“2021520”,{15.8,“free”}};

//法一

printf("%s\n",a.name);

printf("%d\n",a.age);

printf("%.1f\n",a.b.height);//若访问结构体中的结构体中的一个成员,先访问到内部的结构体,再访问内部结构体中的成员

//法二

struct stu* pa=&a;

printf("%s\n",pa->name);

printf("%d\n",pa->age);

printf("%.1f\n",pa->b.height);

//法三

printf("%s\n",(*pa).name);

printf("%d\n",(*pa).age);

printf("%.1f\n",(*pa).b.height);

}

4. 结构体传参


注意

结构体传参的时候,要传结构体的地址更好

看一段代码

struct book

{

float height;

char name[20];

}b;

struct stu

{

char name[20];

int age;

char id[20];

struct book b;

};

void print1(struct stu p)

{

printf("%s %d %s %.1f %s",p.name,p.age,p.id,p.b.height,p.b.name);

}

void print2(struct stu* pa)

{

printf("%s %d %s %.1f %s",pa->name,pa->age,pa->id,pa->b.height,pa->b.name);

}

int main()

{

struct stu a={“bobo”,18,“2021520”,{15.8,“free”}};

//写一个函数打印a的内容

print1(a);//结果为:bobo 18 2021520 15.8 free(正常打印)

//再写一个函数,通过传a的地址打印a的内容

print2(&a);//结果为:bobo 18 2021520 15.8 free(正常打印)

return 0;

}

那么传值和传址有什么不同,哪个更好呢?(首选传址)

  1. 传参时,其实是对实参的一份拷贝,是会开辟一块空间来存储实参。传值,是将整个实参拷贝过去,而传地址,传过去的只是地址,传参的效率更高一些。
  1. 函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。

那么什么是函数调用的参数压栈呢?

  • :一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表
  • 特点:先进的后出,后进的先出。(先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来))
  • 压栈:给栈里存数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值