#define
1、只作字符序列的替换工作,不作任何语法的检查
2、如果宏定义不当,错误要到预处理之后的编译阶段才能发现
# define MAX(A,B) ((A) > (B)?(A):(B))
注意:
1、宏名标识符与左圆括号之间不允许有空白符,应紧接在一起.
2、宏与函数的区别:函数分配额外的堆栈空间,而宏只是替换.
3、为了避免出错,宏定义中给形参加上括号.
4、末尾不需要分号.
5、define可以替代多行的代码,记得后面加。
头文件| 重复包含的问题
1、新增头文件(.h), 在.h文件中对函数进行说明.
#if !defined(ZZZ)
#define ZZZ //这句话的意思可以这样去理解,如果ZZZ已经存在了,就不在声明.
struct Student
{
int level;
};
#endif
内存分配与释放
int* ptr;//声明指针
//在堆中申请内存,分配128个int
ptr = (int *)malloc(sizeof(int) * 128);
//无论申请的空间大小 一定要进行校验 判断是否申请成功
if (ptr == NULL)
{
return 0;
}
//初始化分配的内存空间
memset(ptr, 0, sizeof(int) * 128);
//使用。。。
*(ptr) = 1;
//使用完毕 释放申请的堆空间
free(ptr);
//将指针设置为NULL
ptr = NULL;
文件读写相关函数
1、fopen函数
2、fseek函数
3、ftell函数
4、fclose函数