我需要创建一个交换函数,接受2个地址作为输入,并交换它们,无论它们指向什么类型.下面是我的交换函数:
void swap(void* x,void* y){
void* temp=x;
x=y;
y=temp;
}
当我对整数使用它时,它工作得很好,并且正确地交换了它们,但使用字符串时,地址似乎在函数内部交换了,但当我试图从函数外部调用它们时,我注意到它们根本没有改变.
以下是我的完整代码和结果输出.
printf("before %s %s\n",(char*)array[i],(char*)array[j] );
swap(array[i], array[j]);
printf("after %s %s\n",(char*)array[i],(char*)array[j] );
我想尽一切办法来了解他们到底出了什么问题.
void swap(void* x,void* y){
printf(" after IN %s %s\n",(char*)x,(char*)y );
void* temp=x;
x=y;
y=temp;
printf(" after IN %s %s\n",(char*)x,(char*)y );
}
输出量
before fannullone falafel
after IN fannullone falafel
after IN falafel fannullone
after fannullone falafel