c语言指针函数互换问题 c语言指针互换什么原理

c语言用指针交换两个数?

在 huan(int *p1,int *p2)这个函数中,交换的只是两个指针的指向,但是函数的结束、返回,这两个指针本身就消失了(它们的值并不会传回到main()函数中)所以,最后的结果没有交换。

成都创新互联公司专业为企业提供广南网站建设、广南做网站、广南网站设计、广南网站制作等企业网站建设、网页设计与制作、广南企业网站模板建站服务,十余年广南做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

C语言.定义一个函数实现交换两个整数的功能,(用指针做函数参数)。

主函数里指针p指向变量a的地址,q指向变量b的地址,p=a,*q=b,这应该没问题吧。change函数的形参分别是取a的地址和b的地址,然后用第三个变量t来实现值交换。再打印就是互换后的值。

C语言指针交换问题

1、第一种当然没问题,问题是你写错一个地方,{int m,n,t;改成 {int m,n,*t;t要作为指针的交换变量,那t本身也得定义为指针类型。

2、void swap(int *x,int *y) x,y是地址 temp = *x; //temp的值是x地址指向的值 这么理解就明白了。int a;int *a2;a = 5;a2=a2 = 6;运行到这里a就是等于6,有没有明白呢。

3、解答: 注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。

4、而你如果要在函数内部改变指针的值,你需要传入的是指针的地址,也就是指针的指针。将你的Change函数的参数改为(int **p, int **q), 然后再调用的时候改为change(&p, &q)即可。希望对你又帮助。

c语言中指针交换的问题

1、第一种当然没问题,问题是你写错一个地方,{int m,n,t;改成 {int m,n,*t;t要作为指针的交换变量,那t本身也得定义为指针类型。

2、解答: 注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。

3、因为指针a b是指向指针p q的,所以写成a b的时候只是单纯的指向p q它们所在的地方,而不是指向 i j的地方,也就相当于指针p q换了个位置,使得a指向q也就指向j,b指向p也就指向i,但是i,j自己的值并没有变化。

4、第一题只是交换了行参,第二个是真的交换了了值。第一题传递了两个地址值过去,保存到这个函数作用欲范围内,在这个范围内做了交换,返回了一个地址值,就是指向5那个地址。

5、void swap(int *x,int *y) x,y是地址 temp = *x; //temp的值是x地址指向的值 这么理解就明白了。int a;int *a2;a = 5;a2=a2 = 6;运行到这里a就是等于6,有没有明白呢。


网站栏目:c语言指针函数互换问题 c语言指针互换什么原理
转载注明:http://pwwzsj.com/article/depisic.html