P39内存分配—文件读写
define:
一、无参数的宏定义的一般形式为:# define 标识符 字符序列
如:
# define TRUE 1 # define FALSE 0 int Function() { return TRUE; }
二、带参数宏定义:#define 标识符(参数表)字符序列
# define MAX(A,B) ((A) > (B)?(A):(B))
代码 x= MAX( p, q)将被替换成 y=((p) >(q)?(p):(q)
注意:
1、宏名标识符与左圆括号之间不允许有空白符,应紧接在一起.
2、宏与函数的区别:函数分配额外的堆栈空间,而宏只是替换.
3、为了避免出错,宏定义中给形参加上括号.
4、末尾不需要分号.
5、define可以替代多行的代码,记得后面加 \
#define MALLOC(n,type)\ ((type*)malloc((n)*sizeof(type)))
头文件:
新增头文件(.h),在.h文件中对函数进行说明.
如:
.c文件: void Function() { printf("Hello World!"); } .h文件 void Function();
重复包含的问题:
#if !defined(ZZZ) #define ZZZ struct Student { int level; }; #endif
《》:系统目录查找 “”:当前目录
申请动态内存是在堆里分的
堆:现用现分 malloc出来的都在堆里,使用完毕需要释放申请的空间
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、使用sizeof(类型)*n 来定义申请内存的大小
2、malloc返回类型为void*类型 需要强制转换
3、无论申请的内存有多小 一定要判断是否申请成功
4、申请完空间后要记得初始化.
5、使用完一定要是否申请的空间.
6、将指针的值设置为NULL.
文件使用流程
1、fopen函数 打开文件
2、fseek函数 设置指针指向文件的位置
3、ftell函数 设置文件大小
4、fclose函数 关闭文件