C语言第三天
1、!!!用malloc的时候一定要free
int *a; a = (int *)malloc(sizeof(int)*n) 向内存申请了10个int型的空间,malloc返回值是首地址,但是是无类型(void)型首地址,需要强制转换成当前所需类型。
malloc申请内存之后,如果不用free,就会发生内存泄漏

2、运算符优先级、左结合还是右结合问题
简单的就是:!>算术运算符>关系运算符>&&>||>赋值运算符
c语言大多运算符结合性都是从左往右,只有三个是从右往左,单目,三目,和双目运算符赋值(= %= += *=)等3、野指针的生成、释放
1、产生原因:释放了指针所指向的内存,但没有将指针设置为空
指针超出了数组的边界
未初始化的指针
2、解决方法
释放内存后,将指针设置为空
检查指针是否超过了数组的边界
对指针进行正确的初始化
使用静态分析或动态调试工具来检查和恢复错误
4、const(可读修饰)
初始化的时候要赋值,特别是定义指针指向不能改变也就是p时,先确定p的指向
判断谁可读的时候,把数据类型去掉,修饰哪个,哪个就是可读不可写的
5、extern(扩大函数使用范围)
1、全局变量的使用范围:从当前定义处到程序结尾
2、扩大局部变量的使用范围,在函数里声明,函数结尾结束,扩展为全局变量,就从当前位置到程序结尾。
6、结构体共用体的区别
储存上存在差异,共用体所有成员共享一块空间(所有成员中占内存空间中最大的那块空间),初始化时只能对一个成员的值进行初始化。

浙公网安备 33010602011771号