展开全部
你把指针看成和普通变量一样的东西就好了,指针里存的指针位置,你平时可以做一下实验,什么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指针 建议你去读一下,他用了一本书的篇幅很详细的介绍了指针的前世今生
那么到底怎么实现传值呢?第一种,引用传值,比如很常见的
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指针 建议你去读一下,他用了一本书的篇幅很详细的介绍了指针的前世今生
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改变函数形参的值不影响实参,交换x和y的值对p和q没有影响。
追问
嘿嘿,麻烦能具体分析一下题目嘛~
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询