c++ memset 赋初值错误

#include<cstring>constintN=100009;intAP[N];memset(AP,2,sizeof(AP));n=5;for(inti=0;i<n... #include<cstring>
const int N = 100009;
int AP[N];
memset(AP,2,sizeof(AP));
n=5;
for(int i = 0 ; i < n ; i++)
{
printf("%d ",AP[i]);
}
结果发现AP的值:33686018 33686018 33686018 33686018 33686018 33686020
这是怎么回事?
简写的,程序里没有其他对这个数组的赋值代码了,程序太长不贴出来了
展开
 我来答
Shino_Asada
2015-07-30
知道答主
回答量:14
采纳率:0%
帮助的人:7万
展开全部
/*
void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个“字节“ (typedef unsigned int size_t )用 ch 替换并返回 s 。
1byte = 8bit
如果int为32位
0000 0010 0000 0010 0000 0010 0000 0010
*/
#include <iostream>
int main()
{
std::cout << 0b00000010000000100000001000000010 << std::endl;
return 0;
}
//希望能帮到你(´・ω・`)
追问
我想用memset使数组中的值都为2应该怎么写呢?
追答

memset是不可能了

话说你不是用C++么==

#include <algorithm>
#include <iostream>
int main()
{
int arr[233] = {0};
std::fill(std::begin(arr), std::end(arr), 233);
for (auto elem : arr)
std::cout << elem << std::endl;
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式