我有两个指向double的指针数组需要交换。不仅可以在数组内部复制数据,而且更高效的方法是仅交换指向数组的指针。我一直认为数组名本质上只是指针,但以下代码会收到编译器错误:
double left[] = {1,2,3};
double right[] = {9,8,7};
double * swap = left;
left = right; // Error "ISO C++ forbids assignment of arrays"
right = swap; // Error "incompatible types in assignment of `double*' to `double[((unsigned int)((int)numParameters))]'"
动态创建数组可以解决这个问题,但在我的应用程序中无法实现。我该如何使它工作?
&
来获取指针的地址)。在指针赋值期间,将取一个指针的值并分配给另一个指针。您无法在数组上执行此操作,因为按照语言概念,它们本身表示地址。根据这个概念,您正在尝试做类似于0x23ff10 = 0x23ff44
的事情,假设左边是0x23ff10
,右边是0x23ff44
。 - mip