有关c语言指针的地址传递问题

问题描述:

有关c语言指针的地址传递问题

如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入1 2 结果还是1 2 按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了指针的指向 即p指向b  q指向a  当然a<b时就会运行swap函数,这样一来最后输出的结果是*p 和*q的址.按道理来说应该会进行交换的,
1个回答 分类:综合 2014-11-04

问题解答:

我来补答
这个方式是交换不了的.这样做也是值传递.
在传递参数时,在swap函数内,创建了两个新的指针变量p1,p2,它们的值分别于main函数中传入的参数一样(指向的内存空间一样)所以在swap只是交换的这两个新变量的值,而不会影响main函数中p,q的值
可以修改下swap:
void swap(int *p1, int *p2){
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
 
 
展开全文阅读
剩余:2000
上一页:指函数和对函数
下一页:字丑请见谅。