为什么下面的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没有看到arr1
和arr2
的双指针?
直截了当地说,因为它不是一个双指针。
是因为数组名不是真正的指针,而是“数组”类型变量的标识符吗?
绝对!这种情况的发生正是因为数组不是指针,尽管这两种C对象有许多令人误解的相似之处。
行为是相同的,因为两个表达式在传递到void*
时都会产生数值相同的memcpy
指针。
关于c - 将addressof与2个数组的memcpy一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24205475/