下列函数可以满足“‍要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。”吗,为什么不能

void funa(int *x , int *y)
{
int *p;
*p=*x;*x=*y;*y=*p;
}

因为p定义为指针,又没有指向,而* p=* x;
这句的意思是取x所指存储单元中的值赋给p所指的存储单元,所以错了。

如有帮助,还请帮忙点下采纳!感谢!

定义了指针但指针没有明确指向,然后又对指针指向空间中的数据进行了修改,这样可能会导致指针对不可访问的内存中的数据进行修改,造成各种失败甚至系统崩溃。而且入参有指针要先进行指针判空,不然存在危险。