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));的主要内容,如果未能解决你的问题,请参考以下文章