C语言学习笔记(第四天)

本文详细介绍了C语言中的指针概念,包括指针的定义、使用场景、操作及注意事项。指针用于优化变量传递效率,配合堆内存管理,并在函数间共享变量。文章还讨论了指针的安全使用,如避免野指针和空指针,以及指针运算、数组与指针的关系、指针与const的结合以及指针的高级应用,如指针数组、二级指针和函数指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

指针

什么是指针:指针是一种数据类型(无符号整数,代表了内存编号),使用它可以定义指针变量。简称指针
指针变量的取值范围:0-4G(32个1)。
什么情况下使用指针:1、函数之间共享变量(全局变量会有命名冲突,不会被释放,浪费内存)。
2、优化传递效率
因为C语言采用的是值传递(内存拷贝),会随着变量字节数的增加而降低运行效率,而传递变量的地址,永远只拷贝4||8字节
但使用指针,变量的值就可能会被修改,可以配合const进行保护。
void func(const int * p)
3、配合堆内存:堆内存无法取名字
如何使用指针:
定义:类型 *变量名_p;
1、与普通变量一样,默认值不确定,为了安全一般初始化为NULL
2、一个*只能定义一个指针变量。
int *p1,*p2;
3、指针变量与普通变量的用法不同,为了避免混用,一般从名字上加以区分。
4、指针变量的类型决定了解引用时访问的字节数。
赋值:变量名_p=地址
1、注意地址的类型
2、void*可以与任意类型的指针进行自动转换(C++中不可以)。
3、要保障地址与物理内存有对应关系(映射过),否则会有段错误。
解引用:*p;
根据指针变量中存储的内存编号,而访问内存中的数据。
这个过程可能会有段错误,但这是由于赋值了有问题的地址。
使用指针要注意的问题:
1、野指针
指向的目标不确定,解引用时不一定会出错。但未知的危险才是最可怕的
而且野指针一旦产生就无法分辨出来,而预防的方法就是不制造野指针。
(1)、定义指针时一定要初始化。
(2)、指向的目标被释放后,一定要及时置空。
(3)、不要指向随时可能被释放的目标。
2、空指针:指针变量的值等于NULL,对这个地址解引用访问时一定会产生段错误。
因为它存储的是操作系统重启时所需要的数据。
而预防的方法就是解引用前进行判断(指的是来历不明的指针) if(NULL == p)。
指针的运算:
指针+或/或-整数=指针+或/或-(宽度)*整数
指针-指针 = (指针-指针)/宽度
指针与数组名:
1、数组名就是一个特殊的地址。它就代表数组第一个元素的首地址。但是也能当指针使用。
arr[i]<=>*(地址+i);
因此指针也能使用[ ]运算符。
2、指针与目标内存是指向关系,而数组名是对应关系
3、数组当函数的参数就蜕变成了指针变量,长度丢失,安全性也下降。
void func(int* const arr,size_t len);
指针与const的配合使用:
const int* p;
int const * p;
int * const p;
const int * const;
int const * const p;
指针的高级应用:
指针数组:把无序的离散的数据,归纳到一起。
数组指针:专门指向数组的指针
二级指针:指向指针的指针
函数指针:指向函数的指针

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值