C++引用与指针

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、尽量使用引用而非指针。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容