使用memset函数的各种方式之间的差异

Ins*_*sin 0 c++ memory arrays sizeof memset

以下三个命令有什么区别?

假设我们声明一个包含10个元素的数组arr.

int arr[10];
Run Code Online (Sandbox Code Playgroud)

现在命令是:

命令1:

memset(arr,0,sizeof(arr));
Run Code Online (Sandbox Code Playgroud)

和命令2:

memset(arr,0,10*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

这两个命令在程序中平稳运行,但以下命令不是

命令3:

memset(arr,0,10);
Run Code Online (Sandbox Code Playgroud)

那么3个命令有什么区别?

BWG*_*BWG 5

案例#1:sizeof(arr)返回10*sizeof(int)

案例#2:sizeof(int) * 10返回同样的事情

案例#3:10返回10

一个int占用多个字节(通常在32位上为4).因此,如果你做40了第三种情况,它可能会起作用.但从来没有真正这样做过.