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

交换两个变量的值(指针用法)

时间:2019-03-31 22:05:31      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:a20   ESS   1.5   变量   指针   printf   col   std   思路   

  • 大意:
    用函数实现变量的值的交换,用到指针!

  • 思路:
    该函数要实现变量的值的交换,形参需为两变量的地址。
    1)若不是地址,形参是两个变量,那么传进去的是两个单纯的数值,数值在函数内部做了交换,即函数内的两个局部变量(形参)进行了数值交换,交换后的效果并没有影响到函数外的实参(调用该函数相当于只是给函数提供了两个数值)。
    2)若传给形参的是实参的地址(即指针),那在函数内部通过解引用该指针,可以找到实参的数值,此时再进行交换则交换的是存在实参地址上的数值。交换后的值依然在a和b的地址存放,只不过原来存在a那的数现在存在了b那,存在b那的数现在存在了a那。
  • 技术图片
    (ps:a,b的地址是用十六进制表示的,转成十进制和p,q的值相同)

    • 参考代码:
      #include<stdio.h>
      #include<stdlib.h>
    void swap(int* p, int* q) {
        int tmp=0;
        tmp = *p;
        *p = *q;
        *q = tmp;
        //printf("指针p的值:%d \n指针p的值:%d\n", p, q);
    }
    int main() {
        int a = 10;
        int b = 20;
        printf("a=%d b=%d\n", a, b);
        //printf("a的地址:%p\nb的地址:%p\n", &a, &b);
        swap(&a,&b);
        printf("a=%d b=%d\n", a, b);
        system("pause");
        return 0;
    }

    交换两个变量的值(指针用法)

    标签:a20   ESS   1.5   变量   指针   printf   col   std   思路   

    原文地址:https://blog.51cto.com/14233363/2372051

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