1.如何防止内存分配不成功,却错误的使用内存?
使用前用if(p==NULL)来防错
2.使用free释放内存后,需要将指针置NULL吗
需要,不然会产生野指针
3.出现段错误的原因?
访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,常见的是访问0地址
4.如何快速定位造成段错误的语句?
利用gcc -g -rdynamic test.c
gdb ./a.out
run
5.指针与数组的对比
不能对数组名进行直接复制与比较,应用strcpy函数和strcmp函数
6.宏定义的要点
(1)宏定义不是说明或语句
(2)宏定义必须写在函数之外,其作用域为宏定义命令起到程序结束
(3)宏名在源程序中若用引号括起来,则预处理程序不对其进行宏代换
(4)宏定义允许嵌套
(5)对输出格式作宏定义
7.文件包含中尖括号和双引号的区别
使用尖括号表示在包含文件目录中查找,而不在源文件目录中查找
使用双引号表示在当前的源文件目录中查找,若未找到才到包含目录中查找
8.结构体与数组的比较
都由多个元素组成
各个元素在内存中的存储空间是连续的
数组中各个元素的数据类型相同,而结构体中的各个元素的数据类型可以不相同
9.如何定义结构体?
typedef struct student
{
char name[10];
char sex;
int age;
float score;
}STU;
STU stu1 , *ps,stu[5];
10.define与typedef的区别
typedef只是为了增加可读性而为标识符另起的新名称,而define是为了定义常量