#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))来清零.
时间: 2024-11-05 02:28:02