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
这是怎么回事?
简写的,程序里没有其他对这个数组的赋值代码了,程序太长不贴出来了 展开
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
这是怎么回事?
简写的,程序里没有其他对这个数组的赋值代码了,程序太长不贴出来了 展开
1个回答
展开全部
/*
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询