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)。

  • 相关阅读:
    声明式事务编程
    PlatformTransactionManager
    编码式事务
    事务的ACID
    struts2的工作原理
    通过Callable接口实现多线程
    Struts2 标签
    Struts2基础
    MySQL性能优化(十)-- 主从复制(一主多从)
    JVM学习(一)
  • 原文地址:https://www.cnblogs.com/sunshine233/p/13957889.html
Copyright © 2011-2022 走看看