美文网首页
C++引用与指针

C++引用与指针

作者: dengqiong | 来源:发表于2016-03-12 21:23 被阅读208次

    C++里函数参数传递有3种方式:值传递,指针传递,引用传递

    其中值传递大家都很清楚,传递到函数中的值是原值的一个拷贝,在函数内如何修改参数,都不会改变函数外参数的值。比如

    void func(int x){  

        x=x+10;

    }

    main(){

    int i=0;

    func(i);

    cout<<i<<endl;

    }

    输出结果仍然是0。

    指针传递和引用传递则不然,都会改变外部变量的值。

    指针传递使用方式如下:

    func(int *i){

    *i = *i +10;

    }

    引用传递使用方式如下:

    func(int &i){

    i=i+10;

    }

    上述两种方式函数调用之后,i的值都会变成10;

    简单总结,引用传递的使用方式与值传递相同,但效果与指针传递相同

    到底引用与指针都有哪些区别,容我一一道来:

    1、指针是变量的内存首地址,引用是变量的别名;

    2、sizeof指针的大小,就是4字节,sizeof求引用的大小则与引用的变量类型相关;

    3、对指针赋值,将使指针指向新的地址,对(*p)赋值时,指针值不变,指针指向的内存空间内容变化;对引用赋值效果与对(*p)赋值相同。

    4、指针可以为空,即不指向任何地址,但引用不能为空,在定义的时候就必须绑定到某个变量上。

    使用上的区别:

    1、如果明确不可能为空值,就使用引用,在函数内部对于引用不需要判断是否为空,代码更简洁。

    2、如果需要变换所指向的对象,则需要使用指针,因为引用只能“从一而终”。

    3、尽量使用引用而非指针。

    相关文章

      网友评论

          本文标题:C++引用与指针

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