memset实例(一)
来源:互联网 发布:天谕萌女萝莉数据 编辑:程序博客网 时间:2024/06/05 08:37
工作中,很常用的一个方法,mark,截取了一部分~~~~
#include <iostream>#include <string.h>using namespace std;//void *memset(void *s, int ch, size_t n);//函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。 int main(int argc, char** argv) {/*一定要记住如果要把一个char a[20]清零,一定是 memset(a,0,20*sizeof(char));而不是 memset(a,20*sizeof(char),0);*/ //过度使用memset,我想这些程序员可能有某种心理阴影,他们惧怕未经初始化的内存,所以他们会写出这样的代码://这里的memset是多余的. 因为这块内存马上就被全部覆盖,清零没有意义. #if 0char buffer[4];memset(buffer,0,sizeof(char)*4);strcpy(buffer,"123");#endif#if0char buffer[20];memset(buffer,0,sizeof(char)*20);memcpy(buffer,"123",3);//这一条的memset并不多余,memcpy并没把buffer全部覆盖,如果没有memset,//用printf打印buffer会有乱码甚至会出现段错误。//如果此处是strcpy(buffer,"123");便不用memset,//strcpy虽然不会覆盖buffer但是会拷贝字符串结束符//补充:void *memcpy(void *dest, const void *src, size_t n);//从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中 #endif#if 0//标准例子 char buffer[]="Helloworld\n"; printf("Buffer before memset:%s\n",buffer); memset(buffer,'*',strlen(buffer)); printf("Buffer after memset:%s\n",buffer); return 0;#endif }
1 0
- memset实例(一)
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- memset
- Java入门 第一季第二章 变量和常量
- JavaScript语言精粹之函数篇(二)
- Android PullToRefresh——ListView使用详解
- tomcat安装和启动
- LeetCode *** 299. Bulls and Cows
- memset实例(一)
- LeetCode-237:Delete Node in a Linked List (Python)
- ubuntu下Android开发环境搭建
- EventBus StickyEvent(粘性事件) 的应用场景! 不需要手动注销事件总线
- Android 初探Retrofit2.0.1(最新版)
- springMVC mybatis mysql 配置 事务不起作用的原因
- HttpServletRequest和HttpServletResponse的常用方法
- 深入浅出RxJava三--响应式的好处
- 下载原版Windows/Office