c语言memset(&a, 0, sizeof(struct customer));

Posted

tags:

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

参考技术A memset(&a,
0,
sizeof(struct
customer))函数定义在memory.h中,用于给指定的内存区域赋值,在该语句中,&a指定待赋值的内存首地址,0是要赋的值,而sizeof(struct
customer)用于该内存区域待赋值的长度。
参考技术B memset是用来批量初始化的一个函数
&a是开始地址,
0
表示全部初始化为0,
sizeof()括号里填数据类型,表示该数据类型需要初始化的个数
例如我要初始化数组int
array[10];
memset(array,0,sizeof(int));
//等同于for(int
i;i<10;i++)
array[i]=0;
谢采纳~
参考技术C void
*memset(void
*s,
int
ch,
size_t
n);
函数解释:将s中前n个字节
(typedef
unsigned
int
size_t
)用
ch
替换并返回
s

memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
这句话的意思就是把a指向的这块内存用0填充,就是把struct
customer内存初始化或者设置为0
参考技术D 首先,你看看memset函数的介绍void
*memset(void
*s,
int
ch,
size_t
n);
其次,memset(a,0,sizeof(a))函数是将这个数组中所有元素都设置为0.也就是每一个a[i]都会变为0000
0000
而你的a[0]='\0'只是将a[0]变为了0000
0000,其他的都没有变,虽然所储存的字符串都是空字符串,但从内存上来讲是不一样的。

C语言memset函数清空结构体成员数据

C语言memset函数清空结构体成员数据

  • 函数

memset( (void *)&struct_name, 0x00, sizeof(struct_name));

  • 应用实例
#include <stdio.h>
#include <string.h>

struct date
{ //结构体1
  int a;
  float b;
  char c[64];
} date1; //声明别名
int main()
{
  date1.a = 9527;
  date1.b = 3.14;
  strcpy(date1.c, "{\\"perseverance\\":\\"courge\\",\\"green\\":\\"9527\\"}"); // 标准json字符串;赋值方法strcpy()
  printf("size = %d\\n", sizeof(date1));
  printf("%d\\n %.2f\\n %s\\n", date1.a, date1.b, date1.c);
  memset(&date1, 0, sizeof(date1));//清空结构体成员数据
  printf("%d\\n %.2f\\n %s\\n", date1.a, date1.b, date1.c);
  return 0;
}

在这里插入图片描述

如果是结构体数组:struct sample_struct TEST[10];

 memset(TEST,0,sizeof(struct sample_struct)*10);

以上是关于c语言memset(&a, 0, sizeof(struct customer));的主要内容,如果未能解决你的问题,请参考以下文章

c语言中怎么把一个数组清空

使用 D 切片的 memset() 和 memcpy()

c语言memset源码分析

C语言中,memset函数都可以给啥类型的数组清零?

c语言里有memset()怎么用?需要啥头文件?

C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理