首先,如果您将数组作为参数传递,则类型T
将被推断为数组类型,这会导致问题,因为您无法分配仅复制它们的数组.
然后你误以为你只能切换指针,这是无法做到的.如果你有两个指针,交换它们将工作正常,但你不能只是切换这样的数组.并且在调用中直接使用address-of运算符也不可能使用指向数组的指针,因为这将尝试将引用绑定到不可能的临时值.
使用您的函数"交换数组" 的唯一解决方案就像
char array1[...] = { ... }; char array2[...] = { ... }; char* pointer_to_array1 = array1; char* pointer_to_array2 = array2; swap(pointer_to_array1, pointer_to_array2); // After call, pointer_to_array1 will point to the first element of array2 // and pointer_to_array2 will point to the first element of array1