我有这个代码,我写道,将数组0这段代码如何工作没有任何错误?
int arr[4];
memset(arr, 0, sizeof (arr));
很简单,但代码是如何工作的,没有任何错误,即使sizeof(arr)
= 16(4数组的大小* 4 INT)和大小我使用时,我宣布数组是4,如何memset
设置16位为零,我通过作为参数的数组大小为4?
我用memset(arr, 0, sizeof(arr)/sizeof(*arr));
来获得数组的实际大小,结果是准确的,它给了我4
但上述代码如何正确工作?
在对SO提出问题之前,请先阅读该功能的文档。 – user3286661
为什么你使用上个世纪的函数来绕开C++中的内存? – user463035818
“memset如何将16位设置为零”它将16 _bytes_设置为零,假设sizeof(arr)== 16。 – davmac