关于memset初始化数组的问题

leizh007 2014-03-23 06:19:03
测试代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;++i)
{
cout<<"a 被初始化的值为"<<i-5<<endl;
memset(a,i-5,sizeof(a));
for(int j=0;j<10;++j)
cout<<a[j]<<" ";
cout<<endl;
}
return 0;
}

输出:

不明白为什么结果会是这样?
...全文
206 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leizh007 2014-03-23
  • 打赏
  • 举报
回复
引用 2 楼 cocodada 的回复:
LZ,你这么用不对,你调试的时候看看内存值得变化,menset之后,数组中的每个字节都变成FB(如果初始化为-5),a[0]有4个字节,就变成了FB FB FB FB,输出当然是-67372037
谢谢,没有仔细看memset的说明,它是按字节初始化的啊,我以为是按值呢
Ashily_1020 2014-03-23
  • 打赏
  • 举报
回复
LZ,你这么用不对,你调试的时候看看内存值得变化,menset之后,数组中的每个字节都变成FB(如果初始化为-5),a[0]有4个字节,就变成了FB FB FB FB,输出当然是-67372037
ningto.com 2014-03-23
  • 打赏
  • 举报
回复
memset是用于设置每个字节的,一个int有四个字节,一般用作初始化memset(arr, 0, sizeof(arr));

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧