深究指针与引用的差别
来源:互联网 发布:99scsc最新域名 编辑:程序博客网 时间:2024/05/22 11:34
学习C++很长时间,一直没有深究过引用与指针,感觉应该深入的了解下它们的区别:
由指针定义知,是指向内存中某个存储体对象的变量。它可以指向简单变量, 数组,结构体等,甚至函数 (函数指针)。个人在此有一个疑问,既然指针是指向存储体的变量,而函数没有存储性质,那函数指针如何实现的?
我是从这感觉函数没有存储性质:
class A{ int i; int fun(int );};大家都知道这个类内存中sizeof(A)= 4; 即它的内存完全是分配给(int)变量的。所以它的成员函数(int fun(int))没有存储性质。所以就不明白函数指针的实现?
不知道上面的推理正确吗? 还请大神指点
先绕过这个问题,我们继续说指针和引用
引用的定义很简单,就是对象的别名。是一种复合类型,不能定义引用类型的引用,可以定义其他类型的引用。
具体来说引用和指针有以下几点区别:
1: 非空区别。 任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但该变量可能某段时间不指向任何对象,你就应该声明一个指针。因为你可以赋空值给该指针。相反,如果你可以确定变量一直指向某个对象,就可以使用引用。不存在指向空值的引用。
2: 合法性区别。使用引用可以不用测试它的合法性,但是指针就必须测试它的合法性,防止空指针。就好比有指针传入函数,函数就必须检测指针的合法性。
3:可修改性。指针可以被修改指向不同的对象。但是引用一直指向初始化时被指向的对像,不能改变,但指向对象的内容可以改变。有些像 int * const A ;这个变量。所以引用的初始化很重要。
4: 应用区别。总的来说,以下情况使用指针,一是考虑到可能存在不指向任何对象时候(空值);二是 存在需要指向其他对象的情况。如果需要一个指向一个一直存在的对象,并且不改变它的指向的对象就可以使用引用。
1 0
- 深究指针与引用的差别
- 指针与引用的差别
- C++中指针与引用的差别
- 指针和引用的差别
- 指针和引用的差别
- 指针和引用的差别
- 引用和指针的差别?
- 指针和引用的差别
- c++引用具体用法及与指针的差别
- 引用作为函数与指针及值传递的差别
- C++里指针和引用的差别
- C++引用和指针的本质差别
- 【C++】指针和引用的差别
- 数组与指针的差别
- 指针数组与数组指针的差别
- 传递指针和指针的引用的差别
- 形参为指针和指针的引用之差别
- 值传递与引用传递的差别
- 墨西哥总统:被拆掉两次的亭子
- 面对知网的查重率,如何修改你的毕业论文
- HDU 1005Number Sequence
- 皇上是船,百姓是水。水能载舟亦能覆舟
- 第四周项目一
- 深究指针与引用的差别
- Mac安装nginx
- Pat(Advanced Level)Practice--1034(Head of a Gang)
- C/C++中运算符优先级汇总
- zoj 3640 Help Me Escape(概率dp)
- 雷锋的故事
- HDU 4358 分块
- 3.圆的面积
- linux下的access()函数判断文件是否存在、打印时间