第1个回答 2020-03-30
你把指针看成和普通变量一样的东西就好了,指针里存的指针位置,你平时可以做一下实验,什么0146FB50 0146FB80啥的,既然是作为参数被传过去的,那自然一个函数是不可能对另一个函数里的局部变量做出操作的。
那么到底怎么实现传值呢?第一种,引用传值,比如很常见的
void swap(int& x, int& y)
{
int temp = 0;
temp = x;
x = y;
y = temp;
}
其中的&就起引用调用的作用(建议百度传值调用和引用调用),在这个函数里的改变将回传给调用它的地方。(使用的时候填swap(x, y);就好了,xy是int)
第二种方法,我们把两个数据的地址给交换函数,让交换函数把地址所对应的数字改了,例如你说的第二题,可以改成
void fun(char **x, char ** y)
{
char* p = *x;
*x = *y;
*y = p;
}
这样,就可以实现你要的传递功能了
,另外,你题里的那些指针是可以当做数组看的,比如void fun(char*x,char*y)改写成void fun(char x[],char y[])运行也是一点毛病都没有的,这个是c语言的语法糖之一,有个日本作家叫前桥和弥,他写的 征服C指针 建议你去读一下,他用了一本书的篇幅很详细的介绍了指针的前世今生