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、结构体共用体的区别

  储存上存在差异,共用体所有成员共享一块空间(所有成员中占内存空间中最大的那块空间),初始化时只能对一个成员的值进行初始化。

 

posted @ 2023-05-23 09:57  风中凌乱的猪头  阅读(21)  评论(0)    收藏  举报