首页 > 其他 > 详细

C零基础视频-34-通过指针实现函数交换两个变量的值

时间:2019-10-18 00:01:46      阅读:75      评论:0      收藏:0      [点我收藏+]

回顾:函数的值传递

因为函数的调用过程中,实参到形参是值传递,因此,改变形参,是无法影响到实参的:

#include <stdio.h>

void FakeSwap(int nArg1, int nArg2)
{
    int nTemp = nArg1;
    nArg1 = nArg2;
    nArg2 = nTemp;
}

int main(int argc, char* argv[])
{
    int nValue1 = 100;
    int nValue2 = 200;
    printf("交换前:%d, %d\r\n", nValue1, nValue2);
    FakeSwap(nValue1, nValue2);
    printf("交换后:%d, %d\r\n", nValue1, nValue2);
    return 0;
}

以上,形参的改变,无法影响函数调用的实参,因此无法完成nValue1, nValue2的交换。

使用指针交换两个变量的值

#include <stdio.h>

void PointerSwap(int* pArg1, int* pArg2)
{
    int nTemp = *pArg1;
    *pArg1 = *pArg2;
    *pArg2 = nTemp;
}

int main(int argc, char* argv[])
{
    int nValue1 = 100;
    int nValue2 = 200;
    printf("交换前:%d, %d\r\n", nValue1, nValue2);
    PointerSwap(&nValue1, &nValue2);
    printf("交换后:%d, %d\r\n", nValue1, nValue2);
    return 0;
}

使用指针,函数调用过程中依然是值传递,但是,通过指针的解引用操作,根据传入的地址,直接修改了地址处的值,达到了交换的目的。
实践中,也常通过这种方法,无需返回值,仅使用指针从函数中带出信息

C零基础视频-34-通过指针实现函数交换两个变量的值

原文:https://www.cnblogs.com/shellmad/p/11695615.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!