我使用这段代码:
memcpy(arr[i], arr1[i], sizeof(arr1[i]));
定义:
double** arr; // arr1 is difined the same way.
arr = new double*[row];
for (int i = 0; i < row; ++i) {
arr[i] = new double[col];
memcpy(arr[i], arr1[i], sizeof(arr1[i]));
}
我用命令构建它:g++ -Wall -Wextra -Wpedantic -c arr.cpp
并得到结果:
警告:“void* memcpy(void*, const void*, size_t)”调用中“sizeof”的参数与目标指针类型“double*”相同;预期的“ double ”或显式长度 [-Wsizeof-pointer-memaccess]
memcpy(arr[i], arr1[i], sizeof(arr1[i]));
^
我不明白这是什么。你能告诉我如何让它正常工作吗?
sizeof(arr1[i])
产生 double*
指针变量的大小,而不是您分配的数组的实际大小。
这个警告很完美,感激不尽。
我是一名优秀的程序员,十分优秀!