是不是不能使用memset
在整数数组上?我尝试了以下方法memset
调用并没有得到正确的整数值int
array.
int arr[5];
memset (arr, -1, sizeof(arr)/sizeof(int));
我得到的值是:
arr[0] = -1
arr[1] = 255
arr[2] = 0
arr[3] = 0
arr[4] = 0
只需更改为memset (arr, -1, sizeof(arr));
请注意,对于 0 和 -1 以外的其他值,这不起作用 since memset设置从由 指示的变量开始的内存块的字节值*ptr
对于以下num
bytes.
void * memset ( void * ptr, int value, size_t num );
自从int
如果用多个字节表示,则您将无法获得数组中整数的所需值。
例外情况:
- 0 是一个例外,因为如果将所有字节设置为 0,则该值将为零
- -1 是另一个例外,因为帕特里克强调 -1 在 int8_t 中是 0xff (=255),在 int32_t 中是 0xffffffff
你得到的原因:
arr[0] = -1
arr[1] = 255
arr[2] = 0
arr[3] = 0
arr[4] = 0
是因为,在您的情况下, int 的长度是 4 个字节(32 位表示),数组的长度(以字节为单位)为 20 (= 5 * 4),并且您只将 5 个字节设置为 -1 (= 255)而不是 20。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)