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

  • 相关阅读:
    GridView 内部添加控件
    TreeList获取选中内容
    TreeList简介
    TreeList
    DEV—【GridControl 按钮列无法触发点击事件解决方案】
    dev 多行文本 MemoEdit
    DevExpress控件使用小结
    DEV常用设置
    DEV常用设置
    documentManager1注意事项
  • 原文地址:https://www.cnblogs.com/sunshine233/p/13957889.html
Copyright © 2011-2022 走看看