C++整型数组填充问题?

int a[5];memset(a,9,5);为什么没有填充为9?
2025-02-24 14:47:33
推荐回答(2个)
回答1:

这个是按照字节填充的,就是每个字节都被填成了9,而且只填了前5个字节
在现在的计算机上一个int至少都占用4字节,所以通过一句memset把a中的元素全部置为9不太可能。
char a[5];
memset(a, 9, sizeof(a)); 这个倒是可以。

回答2:

函数原型为:
memset( void*addr , char ch, int size );
size是字节数
中间的参数是char类型,只一个字节,而你输入的9是个整型,在运行时,会只取一个字节
这样填充的内存数据为:
0000100100001001000010010000100100001001
所以读到的不是9!!
这个操作达不到你的想法