为什么下面的memcpy都会产生相同的结果:

int arr1[5] = {some_data1};
int arr2[5] = {some_data2};

memcpy(&arr1, &arr2, (5 * sizeof(int)));
memcpy(arr1, arr2, (5 * sizeof(int)));

为什么第一个memcpy没有看到arr1和arr2的双指针?是因为数组名不是真正的指针,而是“数组”类型变量的标识符吗?

最佳答案

为什么第一个memcpy没有看到arr1arr2的双指针?
直截了当地说,因为它不是一个双指针。
是因为数组名不是真正的指针,而是“数组”类型变量的标识符吗?
绝对!这种情况的发生正是因为数组不是指针,尽管这两种C对象有许多令人误解的相似之处。
行为是相同的,因为两个表达式在传递到void*时都会产生数值相同的memcpy指针。

关于c - 将addressof与2个数组的memcpy一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24205475/

10-12 14:34
查看更多