C 语言总结

本文介绍了C语言中static关键字的双重用途,switch-case结构的使用限制,break与continue的区别,volatile关键字的作用,以及如何有效管理内存如堆和栈。此外还讲解了避免野指针产生的方法。

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

1、关于static的使用

在 C 中引入关键字 static 是为了表示退出一个块后仍然存在的局部变量, static 在 C 中有了第二种含义:

用来表示不能被其它文件访问的全局变量和函数。------一个是和内存有关系,一个是和作用域有关系。

2、switch-case结构中,case 后面只能是整型或字符型的常量或常量表达式。

3、break和continue比较:

 break 关键字很重要,表示终止本层循环。continue 表示终止本次(本轮) 循环。

4、volatile关键字的使用----不能对代码进行优化,每次使用都要从内存中直接读取

例子:
volatile int i=10;
int j = i; //(1)语句
int k = i; //(2)语句
volatile 关键字告诉编译器 i 是随时可能发生变化的,每次使用它的时候必须从内存中取出 i
的值,因而编译器生成的汇编代码会重新从 i 的地址处读取数据放在 k 中


5、
内存编址是以字节为单位的,也就是说一个内存单元的内容是一个字节

6、C语言中,函数就是一段代码的封装。函数名的实质就是这一段代码的首地址。

7、数组的缺陷:数组中所有元素类型必须相同

8、栈是一种数据结构,C语言中使用栈来保存局部变量。栈是被发明出来管理内存的。注意:使用栈时,需要给变量清零堆管理内存的特

9、堆(大块内存、手工分配&使用&释放)-----摘自朱老师物联网大课堂
特点一:容量不限(常规使用的需求容量都能满足)。
特点二:申请及释放都需要手工进行,手工进行的含义就是需要程序员写代码明确进行申请
malloc 及释放 free。如果程序员申请内存并使用后未释放,这段内存就丢失了(在堆管理器
的记录中,这段内存仍然属于你这个进程,但是进程自己又以为这段内存已经不用了,再用
的时候又会去申请新的内存块,这就叫吃内存),称为内存泄漏。在 C/C++语言中,内存泄
漏是最严重的程序 bug,这也是别人认为 Java/C#等语言比 C/C++优秀的地方。

10、如何避免野指针的产生:

常规的做法是:
第一点:定义指针时,同时初始化为 
NULL

第二点:在指针解引用之前,先去判断这个指针是不是 NULL

第三点:指针使用完之后,将其赋值为 NULL

第四点:在指针使用之前,将其赋值绑定给一个可用地址空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值