memset函数c语言使用

使用memset函数需要提前引用头文件include <memory.h>#include <string.h>
函数原型void *memset(void *s,int ch, unsigned n)
其中:
参数s:需要赋值的内存对应的指针,需要注意的是,由于第一个参数是void *类型的,所以在我们实际使用时,括号内的第一个值应该是一个地址(可以是指针,但不能是普通变量,普通变量应该用取地址符&转化为地址)。
参数ch:将ch对应的ASCII值赋给*s
参数n: 赋值的内存块大小
该函数常用于为新开辟的内存做初始化。

  1. 在socket通信中,函数memset经常使用,用于清空缓存区数组buffer:
memset(buffer, 0, sizeof(buffer));
  1. memset可用于将内存全部置为某个值:
char str[100];
memset(str, "\0", sizeof(str));
  1. memset可用于清空结构体
struct Mystruct
{
    
    
	int age;
	char name[];
};
struct Mystruct Lily;

用一般的方法清空结构体变量Lily,需要对结构体中的每一个变量进行清空处理,而当用到memset时:

memset(&Lily, 0, sizeof(struct Mystruct));

只需一条语句就可以清空结构体变量。
4. memset清空结构体数组
接3.中的结构体变量,假设我们不只有Lily一个人,而是有20个人,这样一个结构体数组也可以用memst函数清空。

struct Mystruct People[20];
memset(People, 0, sizeof(struct Mystruct)*20);

需要注意的是,这里People没有取地址,因为它是一个数组,People本来就是一个指针,也就是地址了。
推荐一篇非常好本文参考的博客https://www.cnblogs.com/ZY-Dream/p/10049860.html

おすすめ

転載: blog.csdn.net/qq_43511299/article/details/119840399
おすすめ