【C语言】memset函数用法

数组也可以直接进行初始化,但 memset 是对较大的数组或结构体进行清零初始化的最快方法,因为它是直接对内存进行操作的。

头文件:#include <string.h>

void *memset(void *s, int c, unsigned long n);

函数的功能是:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。参数 n 的值一般用 sizeof() 获取,这样比较专业。

# 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;
}

\x20:使用十六进制表示形式(恰好两位)与 ASCII 字符匹配。

根据memset函数的不同,输出结果也不同,分为以下几种情况:

memset(p, 0, sizeof(p));  //地址的大小都是4字节

0 0 0 0 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(*p));  //*p表示的是一个字符变量, 只有一字节

0 -52 -52 -52 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(str));

0 0 0 0 0 0 0 0 0 0

memset(str, 0, sizeof(str));

0 0 0 0 0 0 0 0 0 0

memset(p, 0, 10);  //直接写10也行, 但不专业

0 0 0 0 0 0 0 0 0 0

相关知识
【C/C++】strlen 和sizeof 的区别

猜你喜欢

转载自blog.csdn.net/weixin_45867159/article/details/114239446