美文网首页
C语言 函数传参的理解

C语言 函数传参的理解

作者: 奈蜇 | 来源:发表于2022-10-03 17:16 被阅读0次

    C语言有点东西 不像JAVA 不需要复杂考虑参数传递问题

    java就两种参数传递方式 值传递AND引用传递(类似指针)

    java: 8种基本数据类型全是值传递 其他数据类型都是引用传递

    有一个特例String 虽然说是引用传递 但是效果却和值传递类似

    为什么要纠结这个问题

    //定义了一个函数
    void add(int x,int y,int z){
            x = y + z;
    }
    
    int a = 1;
    int b = 2;
    int c = 3;
    
    System.out.println(a);
    add(a,b,c);
    System.out.println(a);
    
    
    //运行结果
    1
    1
    

    我们预期是想让a变成5,但是实际程序运行后a的值还是没有改变。这个就是值传递 函数内的x并不是外部的a

    由于java并没有真的的指针就不写修复的方法了 其实也没必要...

    重点来了 C是有指针的 我们要修复这个问题

    //换一种定义
    void add(int *x,int *y,int *z)
    {
            *x = (*y) + (*z);
    }
    
    int a = 1;
    int b = 2;
    int c = 3;
    
    printf(a);
    add(&a,&b,&c);
    printf(a);
    
    
    //运行结果
    1
    5
    

    int *x 是定义一个int指针

    (*y) 是这个指针的指向的内存 //括号无实际意义只是为了更好的理解这个是一个值了,不是指针了

    *x = 1+2 是修改这个指针 指向的内存 里面的值

    &a 是获取这个变量的指针

    单纯的一个记录给自己看的帖子

    相关文章

      网友评论

          本文标题:C语言 函数传参的理解

          本文链接:https://www.haomeiwen.com/subject/sloyartx.html