博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
零基础逆向工程16_C语言10_宏定义_头文件_内存分配_文件读写
阅读量:5159 次
发布时间:2019-06-13

本文共 958 字,大约阅读时间需要 3 分钟。

#define

无参数的宏定义的一般形式为:#define 标识符 字符序列

如:#define TRUE 1

注意事项:
1.之作字符序列的替换工作,不作任何语法的检查
2.如果宏定义不当,错误要到预处理之后的编译阶段才能发现

带参数宏定义:#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)))

头文件

分别写在不同的文件中

重复包含的问题

#ifndef (XXX)

#define XXX

内存分配与释放

int* ptr;  //声明指针//在堆中申请内存,分配128个intptr = (int*)malloc(sizeof(int)*128);//无论申请的空间大小 一定要进行校验 判断是否申请成功if (ptr == NULL){    return 0;}//初始化分配的内存空间memset(ptr, 0, sizeof(int)*128);//使用*(ptr) = 1;//使用完毕 是否申请的堆空间free(ptr);//将指针设置为NULLptr = NULL;

文件读写相关函数

1.fopen函数

2.fseek函数

3.ftell函数

4.fclose函数

自我检测

1.用十六进制文本编辑器,打开一个记事本的.exe文件,再打开在内存中的记事本进程,记录下这两个文件的不同。

2.将记事本的.exe文件读到内存,并返回读取后在内存中的地址
3.将内存中的数据存储到一个文件中,(.exe格式),然后双击打开,看是否能够使用。

转载于:https://www.cnblogs.com/flatcc/p/7501102.html

你可能感兴趣的文章
onlevelwasloaded的调用时机
查看>>
求出斐波那契数组
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
LeetCode Ones and Zeroes
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
PAT L2-016 愿天下有情人都是失散多年的兄妹
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>