C语言memset函数

一、memset函数是什么有什么作用

# include <string.h>
void *memset(void *s, int c, unsigned long n);

定义:

  • 内存初始化方法,mem即“内存”(memory)的意思。

作用:

  • 初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。
  • 将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。

二、为什么使用menset函数

  • 我们都知道定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构。在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”。
  • memset 一般使用“0”初始化内存单元,而且通常是给数组或结构体进行初始化。
  • 一般的变量如 char、int、float、double 等类型的变量直接初始化即可,没有必要用 memset。如果用 memset 的话反而显得麻烦。

注意:

  • memset 函数的第三个参数 n 的值一般用 sizeof() 获取。
  • 如果是对指针变量所指向的内存单元进行清零初始化,那么一定要先对这个指针变量进行初始化,即一定要先让它指向某个有效的地址。而且用memset给指针变量如p所指向的内存单元进行初始化时,n 千万别写成 sizeof§,这是新手经常会犯的错误。因为 p 是指针变量,不管 p 指向什么类型的变量,sizeof§ 的值都是 4。

三、memset函数的使用

例题:

# include <stdio.h>
# include <string.h>
int main(void)
{
    
    
    int i;  //循环变量
    char str[10];
    char *p = str;
    memset(str, 0, sizeof(str));  //只能写sizeof(str), 不能写sizeof(p)
    for (i=0; i<10; ++i)
    {
    
    
        printf("%d\x20", str[i]);
    }
    printf("\n");
    return 0;
}

结果:

0 0 0 0 0 0 0 0 0 0

--------------------------------
Process exited after 0.7619 seconds with return value 0
请按任意键继续. . .

每一个数组都初始化为0。

猜你喜欢

转载自blog.csdn.net/mjh1667002013/article/details/115206982