【发布时间】:2017-02-18 07:21:43
【问题描述】:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int arr[1010];
memset(arr,1,sizeof(arr));
cout<<arr[1]<<endl;
return 0;
}
我正在尝试初始化值为 1 的数组。 我希望我的 o/p 为 1。但是我得到了一些随机数(16843009)作为程序的 o/p。我不明白代码有什么问题???
当我尝试使用值 -1 和 0 初始化数组时,我得到了预期的答案。是否可以使用值不是 -1 和 0 的 memset 来初始化 int 数组??????
【问题讨论】:
-
想过使用
for循环来初始化它吗?! -
仅当您想将内存清零时才使用 memset。如上所述 - 它只对字节有效,这就是为什么你会得到这个值:
0x01010101 == 16843009。 -
另外
using namespace std不好见here -
另外,使用
#include<bits/stdc++.h>is equally bad -
而在 C++ 中,您有
std::fill用于填充值(而不仅仅是字节)。