memset函数

Posted Daniel_z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memset函数相关的知识,希望对你有一定的参考价值。

前段时间学习了malloc函数和calloc函数,两个函数最大的区别就是malloc在申请完空间之后并不会对其进行初始化,那么就没有手动初始化的方法了么?接下来就学习一下memset函数

memset函数:

  • 函数原型:void* memset(void *s , int ch , size_t n);
  • 函数说明:将指针s所指向的内存空间的前n个字节的内容全部设置为ch指定的ASCII码,s为需要被初始化的内存地址,块的大小由第三个参数指定,该函数通常为新申请的内存做初始化工作
  • 返回值:返回值为指向s的指针
  • 头文件:<string.h>或者<memory.h>
  • 一般应用:
    • 通常用来对一块已经分配地址的内存进行初始化,并且通常初始化为0或者字符‘\0‘,举例说明
 1 //1,对字符数组进行初始化
 2 int main(){
 3     char buf[10];//创建一个字符数组 
 4     memset(buf,0,sizeof(char)*10);//将buf指向的空间的前10个字节初始化为字符‘\0‘
 5     for(int i = 0;i < 10;i++){
 6         cout << buf[i] << endl;  
 7     }
 8     cout << endl;
 9     return 0;
10 }
11 //结果应该是10个0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
20 0
21 0
  • 对使用malloc函数申请的内存空间进行初始化
 1 int main(){
 2     char *ptr = (char*) malloc(sizeof(char)*10);
 3     if(ptr != NULL){
 4         memset(ptr,0,sizeof(char)*10);
 5         for(int i=0;i<10;i++){
 6             cout << ptr[i] << endl;
 7         }
 8     free[ptr];
 9     ptr = NULL;
10 
11     return 0;
12 }//结果和上面的一样,是10个0
  • 对整型数组进行初始化
1 int main(){
2     int in[10];
3     memset(in,0,sizeof(int)*10);
4     for(int i=0;i<10;i++){
5         cout << in[i] << endl;
6     }
7     return 0;
8 }

 

以上是关于memset函数的主要内容,如果未能解决你的问题,请参考以下文章

与memset函数等效的Linux内核是什么?

c语言memset()函数

函数“memset”的隐式声明 [-Wimplicit-function-declaration] [重复]

c/c++中对于memset的个人理解

memset()函数

请教高手:memset函数详细讲解?