问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

memset清空结构体变量?

发布网友 发布时间:2023-03-26 15:53

我来回答

4个回答

热心网友 时间:2023-10-21 16:14

将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,
块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,
其返回值为指向S的指针。
需要的头文件
<memory.h>
or
<string.h>
函数原型  void
*memset(void
*s,
int
ch,
unsigned
n);
程序例  #include
<string.h>
  #include
<stdio.h>
  #include
<memory.h>
memset函数
int
main(void)
  {
  char
buffer[]
=
"Hello
world/n";
  printf("Buffer
before
memset:
%s/n",
buffer);
  memset(buffer,
'*',
strlen(buffer)
);
  printf("Buffer
after
memset:
%s/n",
buffer);
  return
0;
  }
  输出结果:
  Buffer
before
memset:
Hello
world
  Buffer
after
memset:
************
  编译平台:
  Microsoft
Visual
C++
6.0
  也不一定就是把内容全部设置为ch指定的ASCII值,而且该处的ch可为int或者其他类型,并不一定要是char类型。例如下面这样:
  int
array[5]
=
{1,4,3,5,2};
  for(int
i
=
0;
i
<
5;
i++)
  cout<<array[i]<<"
";
  cout<<endl;
  memset(array,0,5*sizeof(int));
  for(int
k
=
0;
k
<
5;
k++)
  cout<<array[k]<<"
";
  cout<<endl;
  输出的结果就是:
  1
4
3
5
2
  0
0
0
0
0
  后面的表大小的参数是以字节为单位,所以,对于int或其他的就并不是都乘默认的1(字符型)了。而且不同的机器上int的大小也可能不同,所以最好用sizeof()。
  

  要注意的是,memset是对字节进行操作
  所以上述程序如果改为
  int
array[5]
=
{1,4,3,5,2};
  for(int
i
=
0;
i
<
5;
i++)
  cout<<array[i]<<"
";
  cout<<endl;
  memset(array,1,5*sizeof(int));//
注意
这里与上面的程序不同
  for(int
k
=
0;
k
<
5;
k++)
  cout<<array[k]<<"
";
  cout<<endl;
  输出的结果就是:
  1
4
3
5
2
  16843009
16843009
16843009
16843009
16843009
  因为memset是以字节为单位就是对array指向的内存的5个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。

热心网友 时间:2023-10-21 16:15

memset(&sell,0,sizeof(sell));
取址

热心网友 时间:2023-10-21 16:15

呵呵
/* MEMSET.C: This program uses memset to
* set the first four characters of buffer to "*".
*/

#include <memory.h>
#include <stdio.h>

void main( void )
{
char buffer[] = "This is a test of the memset function";

printf( "Before: %s\n", buffer );
memset( buffer, '*', 4 );
printf( "After: %s\n", buffer );
}

看看。

Sets buffers to a specified character.

void *memset(
void* dest,
int c,
size_t count
);

whar_t *wmemset(
wchar_t* dest,
wchar_t c,
size_t count
);
Parameters
dest
Pointer to destination.
c
Character to set.
count
Number of characters.
Return Values

要是指针才行哦。

热心网友 时间:2023-10-21 16:16

将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。
需要的头文件
<memory.h> or <string.h>
函数原型  void *memset(void *s, int ch, unsigned n);
程序例  #include <string.h>
  #include <stdio.h>
  #include <memory.h>
memset函数
int main(void)
  {
  char buffer[] = "Hello world/n";
  printf("Buffer before memset: %s/n", buffer);
  memset(buffer, '*', strlen(buffer) );
  printf("Buffer after memset: %s/n", buffer);
  return 0;
  }
  输出结果:
  Buffer before memset: Hello world
  Buffer after memset: ************
  编译平台:
  Microsoft Visual C++ 6.0
  也不一定就是把内容全部设置为ch指定的ASCII值,而且该处的ch可为int或者其他类型,并不一定要是char类型。例如下面这样:
  int array[5] = {1,4,3,5,2};
  for(int i = 0; i < 5; i++)
  cout<<array[i]<<" ";
  cout<<endl;
  memset(array,0,5*sizeof(int));
  for(int k = 0; k < 5; k++)
  cout<<array[k]<<" ";
  cout<<endl;
  输出的结果就是:
  1 4 3 5 2
  0 0 0 0 0
  后面的表大小的参数是以字节为单位,所以,对于int或其他的就并不是都乘默认的1(字符型)了。而且不同的机器上int的大小也可能不同,所以最好用sizeof()。
   ,
  要注意的是,memset是对字节进行操作
  所以上述程序如果改为
  int array[5] = {1,4,3,5,2};
  for(int i = 0; i < 5; i++)
  cout<<array[i]<<" ";
  cout<<endl;
  memset(array,1,5*sizeof(int));// 注意 这里与上面的程序不同
  for(int k = 0; k < 5; k++)
  cout<<array[k]<<" ";
  cout<<endl;
  输出的结果就是:
  1 4 3 5 2
  16843009 16843009 16843009 16843009 16843009
  因为memset是以字节为单位就是对array指向的内存的5个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我女朋友我在同事面前说她是我媳妇她默认,在她组长面前就不承认了什么... 跨省迁户口需要的手续 户口跨省迁移需要哪些手续? cf空白名字怎么打(cf空白名字怎么打2021) 关于旅行的电影 就是一个人旅行放松心灵那种 不要纪录片 模拟人生2高斯的遗产给儿子还是女儿 模拟人生2如何跟高斯结婚啊? 模拟人生2高斯怎么找到贝拉,找到后能怎么办? 我的米2插上充电器后屏幕一直闪,快速的一下显示充电一下没在充电。请 ... ...屏幕乱闪 充不进去电 用手机连接电脑也是一样 “黄云连陇树”出自哪一首诗词? 新生儿肝功能报告怎么看? 我想知道联想G470的显卡在哪,求大神看看在哪? 产后恶露几天排干净,产后骨盆疼痛是什么原因引起的 中国人民解放军海军所说的“临检拿捕”是什么意思? 度我至军的军是什么意思? 军中大拿是什么意思 美国卡车模拟给司机什么车 有一句歌词‘我问天问大地’是哪一首歌里的 14万的车首付40%是多少 车马盈门的解释 前度的解释 梦见很多死人的手的预兆 梦见了死人手的预兆 梦见摸死人的手的预兆 非营改增是什么意思? 三定三限三结合意思简述 三定三限三结合是什么意思 37号文不注销会怎么样 梦见娘儿子成了叫花子的预兆 梦见叫花子的预兆 请问各位,如何用用memset清空结构体和用memcpy将读取到的数据拷贝给结构体里面的buff。 定义了一个结构体,我想把结构体变量里面的内容清空,之后再继续用,怎么办?怎么清空 c语言如何将结构体清零? 怎么把结构体数组的1个数据清空 c++结构体变量如何清空 启创智恒传媒怎么样 长沙哪家公司制作企业宣传片性价比最高? 湖南梦马影视传媒有限公司怎么样 饮食营业执照怎么办理 饮食营业执照多久能办下来 花坛种什么花 衰渐的解释 衰_的意思衰_的意思是什么 属于产业市场细分标准的是? 生产者市场细分的标准主要有 产业市场细分的标准之一是顾客规模? 怎么能免费得到万国手表 ido手表免费送是真的吗 小霸王儿童手表免费送会收保证金吗 我刚买的小米5x,插电信卡进去,用不了,大不了电话,别人打进来说关机,网络也用不了