zoukankan      html  css  js  c++  java
  • C语言三种参数传递方式

    值传递、指针传递、引用传递

    只有在函数调用时,才会为形参分配内存空间,调用结束便会释放。

    值传递和指针传递,传递的都是实参的一份拷贝。

    C语言在线编译器:http://www.dooccn.com/c/

    值传递:

    #include <stdio.h>
    
    void exchange(int x, int y)
    {
        int tmp;
        tmp = x;
        x = y;
        y = tmp;
        printf("x=%d,&x=%d
    y=%d,&y=%d
    ",x,&x,y,&y);
    }
    
    int main(void) 
    { 
        int a=3, b=4;
        printf("a=%d,&a=%d
    b=%d,&b=%d
    ",a,&a,b,&b);
        exchange(a,b);
        printf("a=%d,&a=%d
    b=%d,&b=%d
    ",a,&a,b,&b);
        return 0;
    }

    结果:

    a=3,&a=17295016
    b=4,&b=17295020
    x=4,&x=17294972
    y=3,&y=17294968
    a=3,&a=17295016
    b=4,&b=17295020

    地址传递:

    #include <stdio.h>
    
    void exchange(int *x, int *y)
    {
        int *tmp=NULL;
        tmp = x;
        x = y;
        y = tmp;
        printf("*x=%d, x=%d
    ", *x, x);
        printf("*y=%d, y=%d
    ", *y, y);
    }
    
    int main(void) 
    { 
        int a=3, b=4;
        printf("a=%d, &a=%d
    ", a, &a);
        printf("b=%d, &b=%d
    ", b, &b);
        exchange(&a,&b);
        printf("a=%d, &a=%d
    ", a, &a);
        printf("b=%d, &b=%d
    ", b, &b);
        return 0;
    }

    结果:

    a=3, &a=-892176920
    b=4, &b=-892176916
    *x=4, x=-892176916
    *y=3, y=-892176920
    a=3, &a=-892176920
    b=4, &b=-892176916

    引用传递

    #include <stdio.h>
    
    void exchange(int &x, int &y)
    {
        int tmp;
        tmp = x;
        x = y;
        y = tmp;
        printf("x=%d, &x=0x%d
    ", x, &x);
        printf("y=%d, &y=0x%d
    ", y, &y);
    }
    
    int main(void) 
    { 
        int a=3, b=4;
        printf("a=%d, &a=0x%d
    ", a, &a);
        printf("b=%d, &b=0x%d
    ", b, &b);
        exchange(a,b);
        printf("a=%d, &a=0x%d
    ", a, &a);
        printf("b=%d, &b=0x%d
    ", b, &b);
        return 0;
    }

    结果:

    a=3, &a=0x1079344872
    b=4, &b=0x1079344876
    x=4, &x=0x1079344872
    y=3, &y=0x1079344876
    a=4, &a=0x1079344872
    b=3, &b=0x1079344876
    
    
  • 相关阅读:
    解决ActiveX插件ZIndex属性无效问题
    XNA游戏开发之字符篇
    XNA游戏开发之滚动背景
    ExtJs之FormPanel篇
    独立Discuz头像编辑模块
    XNA游戏开发之2D游戏
    WPF系列之应用程序生命周期
    DiscuzX2.0在windows下的配置
    Silverlight之out of Browser模式
    使用VisualStudio2010连接CodePlex进行代码管理
  • 原文地址:https://www.cnblogs.com/keepdoing123/p/12054689.html
Copyright © 2011-2022 走看看