指针和引用的区别总结
2017-03-27 15:58
453 查看
很多的面试题中,作为一个c++的工程师,能够完整的描述自己理解的指针和引用的却别是很有必要的,而且也要求自己对指针作为形参和引用作为形参的却别有一个深刻的理解,下面是我的总结,有什么不对的地方希望能够指出。
首先再回答这个问题的时候首先要说一句,指针是指向内存地址的一个变量,而引用是变量的别名,先把他们的定义说出来这样。
然后可以一条一条的叙述比如
指针可以有常属性(const),而引用并没有常属性。
指针可以有一级指针,二级指针,但是引用并没有一级引用二级引用
指针可以为空,但引用不能为空,且引用在定义的时候必须初始化
指针在初始化之后,指针的指向可以改变,但是引用一旦初始化以后就不能再改变
在计算sizeof指针的时候计算的是指针的大小,4个字节。而在sizeof引用的时候计算的是引用对象的大小
指针和引用的自增运算符意义不同
引用的主要功能是传递函数的参数和返回值。C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递
值传递(pass by value)
主要是用在一些函数中,可以把实参传递给形参,形参在自己的函数中拷贝了实参的值,用来自己函数内的计算
指针传递(pass by point)
指针传递主要用再,把实参的地址传进去,形参用相应数据类型的指针来接受地址,在形参的函数中,拿着指向实参的指针来操作这个数据,形参的改变会相应的改变实参的数据,由于指针的功能太强大,导致给予了它太多的权限,导致相应的代码的可读性,以及代码的安全性收到了很大的困扰。
引用传递(pass by reference)
在c++中比较淡化了指针的功能,如果仅仅只是为了使用指针传参的功能,那么用引用就可以,而且看起来和值传递类似,但是本质上和指针传递一样
首先再回答这个问题的时候首先要说一句,指针是指向内存地址的一个变量,而引用是变量的别名,先把他们的定义说出来这样。
然后可以一条一条的叙述比如
指针可以有常属性(const),而引用并没有常属性。
指针可以有一级指针,二级指针,但是引用并没有一级引用二级引用
指针可以为空,但引用不能为空,且引用在定义的时候必须初始化
指针在初始化之后,指针的指向可以改变,但是引用一旦初始化以后就不能再改变
在计算sizeof指针的时候计算的是指针的大小,4个字节。而在sizeof引用的时候计算的是引用对象的大小
指针和引用的自增运算符意义不同
引用的主要功能是传递函数的参数和返回值。C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递
值传递(pass by value)
主要是用在一些函数中,可以把实参传递给形参,形参在自己的函数中拷贝了实参的值,用来自己函数内的计算
指针传递(pass by point)
指针传递主要用再,把实参的地址传进去,形参用相应数据类型的指针来接受地址,在形参的函数中,拿着指向实参的指针来操作这个数据,形参的改变会相应的改变实参的数据,由于指针的功能太强大,导致给予了它太多的权限,导致相应的代码的可读性,以及代码的安全性收到了很大的困扰。
引用传递(pass by reference)
在c++中比较淡化了指针的功能,如果仅仅只是为了使用指针传参的功能,那么用引用就可以,而且看起来和值传递类似,但是本质上和指针传递一样
相关文章推荐
- 引用与指针的区别总结
- 指针和引用的区别总结
- 指针和引用的区别总结
- 指针和引用的区别总结
- 【分析总结框架记录】引用和指针在交换中的区别
- 指针和引用的区别总结
- C++ 指针和引用区别的总结
- 函数返回值总结 (返回指针和引用的区别)
- 指针和引用的区别总结
- 指针和引用的区别总结
- 指针和引用的区别总结
- 指针和引用的区别总结
- C++总结1——指针和引用/数组的区别
- C++知识点总结(上):指针和引用,static关键字,const关键字,malloc\free和new\delete的区别等
- C++中引用和指针的两个重要区别
- 指针和引用的区别
- 指针与引用的区别
- 引用和指针的主要区别
- 指针与引用的区别(More Effective C++)
- 指针和引用的区别