赞
踩
概要:要通过函数实现交换两个整型变量的内容,可以利用指针通过地址远程改变a、b的值,以达到交换a、b值的目的。
1.利用传参值传递方法无法达到交换的目的(传值调用):
当实参传递给形参时,形参是实参的一份临时拷贝,所以对形参的修改不会影响实参。
从监视可以看出a→x、b→y传参成功,由于a、b分别和x、y地址不同,x、y有自己独立的内存空间存储内容。即使x、y通过tmp交换了内容,但是不影响a、b。
2.利用指针址传递可以达到交换的目的(传址调用):
把a地址pa,把b地址给pb,通过tmp将*pa(即a)和*pb(即b)交换变量,即通过地址远程交换了a和b的内容。(注意:不是交换地址。ps:pa是a的地址,*pa是该地址所存储的值即变量a。)
通过形参的指针就能够访问到函数外部的变量,并进行操作。
以下是完整代码:
- #include<stdio.h>
- void Swap(int *pa, int *pb)
- {
- int tmp = *pa;
- *pa = *pb;
- *pb = tmp;
- }
-
- int main()
- {
- int a = 0;
- int b = 0;
- scanf("%d %d", &a, &b);
- printf("交换前:a=%d b=%d\n", a, b);
- Swap(&a, &b);
- printf("交换后:a=%d b=%d\n", a, b);
- return 0;
- }

赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。