C++中的memset()函数 ------------转自:http://www.360doc.com/content/10/1006/18/1704901_58866679.shtml

memset()函数可以对大内存的分配进行很方便的操作(初始化),所谓“初始化”,当然是指将你定义的变量或申请的空间赋予你所期望的值,例如语句int i=0;就表明定义了一个变量i,并初始化为0;如果int j=5;就表明定义了一个变量j,并初始化为5。
  
但是对于大块儿内存的分配,这种方法当然不行,例如int arr[100];定义了数组arr,包含100个元素,如果你写成int arr[100]=0;想将数组全部内容初始化为0,是不行的,连编译都不能通过。这种情况的初始化,有两种方法,一种是一个一个的初始化,如for(int i=0;i<100;i++)arr[i]=0;就完成了数组的初始
如for(int i=0;i<100;i++)arr[i]=0;就完成了数组的初始化。另一种方法,就是使用memset:一个语句就够了:--memset(arr,0,sizeof(int)*100); 
各参数解释如下:arr是数组的首地址,0就是要讲这些地址的内容赋值为0,sizeof(int)求出int类型的长度,乘以100就表示arr数组的整个长度。
当然,如果用malloc分配的内存,一般只能使用memset来初始化了,用第一种初始化方法明显不合适。
举例: 
#include <memory.h> //我试了一下,C语言这么用,C++还可以用<cstring>  
#include <stdio.h> 
 void main( void )  
{  
 char buffer[] = "This is a test of the memset function";  
 printf( "Before: %s\n", buffer ); 
 memset( buffer, ‘*‘, 4 ); 
 printf( "After: %s\n", buffer ); 
 }  
输出:  
Before: This is a test of the memset function  
After: **** is a test of the memset function  

C++中的memset()函数
------------转自:http://www.360doc.com/content/10/1006/18/1704901_58866679.shtml

时间: 2024-10-10 22:07:23

C++中的memset()函数 ------------转自:http://www.360doc.com/content/10/1006/18/1704901_58866679.shtml的相关文章

透彻分析C/C++中memset函数

原文:http://blog.csdn.net/dan15188387481/article/details/49621447 在C语言中,经常需要对内存进行操作,里面涉及很多函数,但是memset函数的使用有一点需要大家格外注意,这也是我在做项目时遇到过的一个问题,调试了很久才找出来错误. 函数原型是:void *memset(void *s, int ch, size_t n); 函数功能是:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地

C/C++中memset函数

本文学习参考http://baike.baidu.com/link?url=ZmSyY8ciB_nJt9KM-W2fiEFJrC2mugFsLqRdY2b4pLe8rD_jRXyN7_pj0GBBD2bKyt6Xm-lpUlAO97H94dUYXa 1.memset函数的声明和含义如下: 函数解释:将s所指向的某一块内存中的前n个字节的内容全部设置为 ch 指定的 ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针

memset()函数中的坑

一 写在开头1.1 本节内容内存填充函数memset()中的坑. 二 函数原型 1 /* 来自man memset */ 2 #include <string.h> 3 void * memset(void * s, int c, size_t n); 功能描述:memset()函数用常量c的值填充由指针s所指向的内存地址空间的前n个字节的内存空间. DESCRIPTION : The memset() function fills the first n bytes of the memor

memset()函数

1. memset()函数原型是extern void *memset(void *buffer, int c, int count)        buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度. 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)) Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为' '或'/0': 例:char a[100];

strcpy, memcpy, memset函数

一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针. 实现代码: char * strcpy(char * strDest,c

strcpy,memcpy,memset函数实现

strcpy 实现,只能拷贝字符串 char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) && (source != NULL)); while((*des++ = *source++)!='\0'); return r; } memcpy 实现,注意目的地址和源地址重合的情况,以及强制类型转换 void *myMemCopy(void *dest,const void *src,siz

memset函数

常见错误: 第一: 搞反了 ch 和 n 的位置. 一定要记住如果要把一个char a[20]清零,一定是 memset(a,0,20);而不是 memset(a,20,0); 第二: 过度使用memset,我想这些程序员可能有某种心理阴影,他们惧怕未经初始化的内存,所以他们会写出这样的代码: 这里的memset是多余的. 因为这块内存马上就被全部覆盖,清零没有意义. 另:以下情况并不多余,因某些编译器分配空间时,内存中默认值并不为0: 第三: 其实这个错误严格来讲不能算用错memset,但是它

memset函数具体说明

1.void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c. 2.样例#include void main(){char *s="Golden Global View"; clrscr(); memset(s,'G',6);printf("%s",s); getchar();return 0;} 3.memset() 函数经常使用于内存空间初始化.如:char str[100];mems

C语言中的memset函数和数组指针

代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 int main(){ 7 int a[5] = {1}; 8 memset(a,5,sizeof(a)); 9 cout<<a[0]<<" "<<a[1]<<endl; 10 cout<<a<<" "<<a+