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
原创粉丝点击