首页 > 代码库 > memset赋值整形数组出现的问题
memset赋值整形数组出现的问题
#include <iostream>#include <string>using namespace std;int main(){ char a[10]; int b[10]; memset(a, ‘*‘, sizeof(a)); memset(b, 1, sizeof(b)); cout << a << endl; cout << b << endl; system("pause");}
输出结果:
**********
0x22ff00
请按任意键继续. . .
为什么不能int数组不能直接输出?--------> C/C++没有对应的重载函数;
那么cout << b[0]<< endl;
是否会输出1呢?
结果输出:
16843009
请按任意键继续. . .
why 16843009 ?
因为memset函数是按字节给数组赋值。 int数组一个元素有4个字节 那么就是00000001 00000001 00000001 00000001
就等于16843009,就完成了对一个int元素的赋值了。
所以用memset对非字符型数组赋初值是不可取的!
当然,可以用memset(b,0,sizeof(b)) 或者memset(b,0, 10 * sizeof(int))来清零.
memset赋值整形数组出现的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。