我试图理解以下代码中的错误。该代码应该在两个数组之间切换。
我看到的是它只切换前 4 个字节。以下是正确的吗?
- 传递
&num1
ornum1
是相同的(都传递数组中第一个元素的地址)。 (char**)
选角是错误的。那是因为当你传递和数组时,你传递了它所在的地址。所以你实际上在这里传递了一个void*
.
我如何才能仅通过指针在这两个数组之间切换?那可能吗?
我知道如果从一开始我就定义了char **num1
and是可能的char **num2
。但我希望它保留数组符号!
#include <stdio.h>
void fastSwap (char **i, char **d)
{
char *t = *d;
*d = *i;
*i = t;
}
int main ()
{
char num1[] = "hello";
char num2[] = "class";
fastSwap ((char**)&num1,(char**)&num2);
printf ("%s\n",num1);
printf ("%s\n",num2);
return 0;
}