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函数 关闭文件

posted @ 2023-03-16 15:16  摸鱼小曹  阅读(33)  评论(0编辑  收藏  举报