zoukankan      html  css  js  c++  java
  • c语言用指针交换两个变量

    #include<stdio.h>
    #include<math.h>
    
    int  main(){
        void swap(int a,int b);
        void swapPointer(int* p1, int* p2);
        int a = 10, b = 20;
    //    swap(a, b);
        swapPointer(&a, &b); // &a 是 int* 类型 
        printf("main: a = %d, b = %d
    ",a, b);
    }
    
    //值传递,传递副本值 ,只是交换了a b的副本值,原有值没有交换
    void swap(int a, int b){
        int temp;
        temp = a;
        a = b;
        printf("swap: a = %d, b = %d 
    ",a, b);
        b = temp;
    }
    
    //引用传递,传递原变量地址 
    void swapPointer(int* p1, int* p2){
        int temp;
        temp = *p1; //指针 p1 所存地址中的内容,赋给 temp 
        *p1 = *p2;
        *p2 = temp;
    }

    swap函数是值传递,传递给实参的是形参的副本值,形参本身的值没有变。

    swapPointer()是引用传递,在调用swapPointer(&a, &b);时,a、b的地址就传给了指针变量p1、p2,*p1=10,*p2=20。然后交换*p1、*p2的值(*p1 = *p2;是交换两个地址中的值,p1=p2是把p2中的地址值也改成了0x62fe1c)。

  • 相关阅读:
    微信运营
    1.数据库&SQL语言
    16.线程
    15.IO流
    14.异常
    13.集合
    12.常用类
    11.String类-StringBuffer类、StringBuilder类
    10.Object类-包装类-内部类
    9.接口
  • 原文地址:https://www.cnblogs.com/sunshine233/p/13957889.html
Copyright © 2011-2022 走看看