zoukankan      html  css  js  c++  java
  • c语言中数值交换用值传递和地址传递

    1:值传递,并未实现真正的交换

    void Swap(int a,int b)//这里a,b的地址与主函数的地址不同,仅仅是函数名相同
    {
        int tmp = a;
        a = b;
        b = tmp;
    }
     
    int main()
    {
        int a=5;
        int b=10;
        Swap(a,b);//a还是5,b还是10
        return 0;
    }

    2:地址传递,但交换的是指针指向,a,b并未实现交换

    #include"stdio.h"
    
    void Swap(int *p1,int *p2)//传入的是a,b的地址,此时p1指向的是a,p2指向的是b;
    {
        int *tmp = p1;//p1的指向地址赋值tmp
        p1 = p2;
        p2 = tmp;//p1,p2指向地址发生交换
    }//可是a,b的值并未发生交换
     
    int main()
    {
        int a=5;
        int b=10;
        Swap(&a,&b);
        return 0;
    }

    3:传递地址,交换地址从而达到值交换

    #include"stdio.h"
    
    
    void Swap(int *p1,int *p2)//传入地址
    {
        int tmp;
        tmp = *p1; //a,b地址发生交换
        *p1 = *p2;
        *p2 = tmp;
    }
     
    int main()
    {
        int a=5;
        int b=10;
        Swap(&a,&b);
        return 0;
    }

     4:传入地址,交换指向的另一种写法

    #include"stdio.h"
    
    
    void Swap(int *p1,int *p2)
    {
        int *tmp;//交换 的 是指针指向
        tmp = p1;
        p1 = p2;
        p2 = tmp;
    }//出了门就不认识了
     
    int main()
    {
        int a=5;
        int b=10;
        int *p=&a,*q=&b;
        Swap(p,q);//传入的依然是地址
        return 0;
    }
  • 相关阅读:
    内存溢出与内存泄露的区别
    <a>标签
    mac上的设置查看环境变量
    css-position
    css-overflow
    css-clear
    mongodb基本操作
    idea使用maven install命令打包(springboot),jar运行时出现没有主清单属性
    linux运行jar报错
    maven deploy时报错
  • 原文地址:https://www.cnblogs.com/franksimon/p/12741300.html
Copyright © 2011-2022 走看看