【C语言】利用指针实现函数交换两个整型变量的内容

概要:要通过函数实现交换两个整型变量的内容,可以利用指针通过地址远程改变a、b的值,以达到交换a、b值的目的。

1.利用传参值传递方法无法达到交换的目的(传值调用):

【C语言】利用指针实现函数交换两个整型变量的内容_第1张图片

 当实参传递给形参时,形参是实参的一份临时拷贝,所以对形参的修改不会影响实参。

【C语言】利用指针实现函数交换两个整型变量的内容_第2张图片

从监视可以看出a→x、b→y传参成功,由于a、b分别和x、y地址不同,x、y有自己独立的内存空间存储内容。即使x、y通过tmp交换了内容,但是不影响a、b。

2.利用指针址传递可以达到交换的目的(传址调用):

【C语言】利用指针实现函数交换两个整型变量的内容_第3张图片

 把a地址pa,把b地址给pb,通过tmp将*pa(即a)和*pb(即b)交换变量,即通过地址远程交换了a和b的内容。(注意:不是交换地址。ps:pa是a的地址,*pa是该地址所存储的值即变量a。)

通过形参的指针就能够访问到函数外部的变量,并进行操作。

以下是完整代码:

#include
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;
}

 

你可能感兴趣的:(C,c语言,算法,c++)