码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-17 23:42:09      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:pre   void   turn   值传递   零基础   amp   href   printf   直接   

回顾:函数的值传递

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

#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-通过指针实现函数交换两个变量的值

标签:pre   void   turn   值传递   零基础   amp   href   printf   直接   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!