c内存操作和宏条件编译
来源:互联网 发布:双色球选号过滤软件 编辑:程序博客网 时间:2024/06/13 20:03
1、内存操作函数
memset(dst,byte_value,size); //从dst开始把size大小的内存设置为byte_value
char* ptr=malloc(100); //向堆申请100个字节的内存大小的内存起始地址返回赋值给 ptr
memset(ptr,0,100) ; //把从ptr开始的内存地址 到 100个字节大小的内存位置,赋值为0
2、memcpy(dst,src,size); //
char* ptr=malloc(100);
char* ptr2 = malloc(100);
memcpy(ptr2,ptr,100); // 把从ptr开始的100个大小的数据复制到ptr2 注意size不能超过两者的size
3、memmove(dst,src,size); //和memcpy一样是 把从src开始的size个大小的数据复制到dst,
memcpy和memmove的区别在于,
如果操作的是同一内存地址,或者内存相交,那么使用memmove
如果操作的是不同的内存地址,内存不会相交 ,就使用memcpy
memmove 比memcpy安全,memcpy效率高
因为memmove是一个字节一个字节复制,memcpy是全部一起复制
宏与条件编译
宏和常量类似性质,宏比常量功能更多,
(1)、只定义一个符号
#define WIN32
(2)、定义一个固定的值,或者表达式
#define WIDTH 640
#define HEIGHT 480 ,这种用法就和常量一样
#define MAX(a,b)((a>b)?a:b) 这里就是比常量更强大的功能可以定义表达式
printf("%d, %d\n",WIDTH,MAX(3,4));
相当于printf("%d, %d\n",640,4);
条件编译:
#if 0 //如果if为真则编译if否则编译else
printf("if编译")
#else
printf("else编译")
#endif
#ifdef WIDTH // 如果定义了WIDTH,就执行编译
#endif
#ifnde WIDTH //如果没有定义WIDTH,就执行编译
#endif
,多用于配置相关环境来编译不同选项,跨平台使用
- c内存操作和宏条件编译
- 8_2 C语言|宏和条件编译指令
- C语言详解(6)宏定义和条件编译
- C/C++编译预处理:宏定义指令、文件包含指令、条件编译指令和特殊符号处理
- C语言宏定义之条件编译
- C语言宏条件编译详解
- C语言-宏条件编译详解
- C语言宏条件编译详解
- C 预处理指令 宏定义 条件编译
- C——宏定义,条件编译
- C语言宏条件编译详解
- C语言 条件编译(宏)
- C语言宏条件编译详解
- C语言条件编译
- c语言条件编译
- C语言条件编译
- C语言条件编译
- C/C++条件编译
- 多线程
- 你不一定看得懂的朴素贝叶斯算法原理
- Android AccountManager帐号管理(一)
- Android 属性动画总结
- R 文件报错解决方式
- c内存操作和宏条件编译
- Bone Collector
- API
- 9.1 在函数上添加包装器
- 指针数组与数组指针
- 机器学习基石-Training versus Testing
- Redis在项目中实战经验
- jqgrid 时间日期格式转换问题NaN,date类型年份异常
- 集合类