我正在尝试(temp)从另一个数组复制一个数组a.但我发现它并没有发生.
Fig-1
int main()
{
typedef int arr_1[3];
arr_1 arr[4];
arr_1 *temp;
arr_1 a[3] = {1, 2, 3};
memset(&temp, 0, sizeof(temp));
memcpy(temp, a, sizeof(temp));
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用如下的简单程序时,
Fig-2
main()
{
int abc[3], def[3];
def[3] = {1, 2, 3};
memcpy(abc, def, sizeof(abc));
}
Run Code Online (Sandbox Code Playgroud)
以上代码(fig-2)对我来说非常好.但是fig-1不适合我.两者都是相同的.但为什么fig-1不工作?
因为temp它不是数组,所以它是一个指针,因此sizeof(temp)与数组完全无关.
您想要更改memcpy要使用sizeof(a).您还需要temp在复制之前给出一个合理的值,否则程序会有未定义的行为.