C++中指针* 和 引用& 用法分析

 C++中指针* 和 引用& 用法分析

 指针

在这里,我们探讨的指针是指普通的指针,C++中的智能指针暂且不谈。
在编程过程中,我们经常会用到指针对变量进行操作。那么如何理解指针的作用呢?我举一个例子来方便理解:

如果将计算机中的内存看作一条街道的话,内存中的存储空间就是这条街道上的一栋栋房子,每栋房子有自己独有的地址。这里,指针的实质就是这些存储空间的一个个起始地址


前面说到了,指针的实质是地址,所以,在32位的机器上,指针的大小为4字节,64位机器上,指针大小为8字节。(一般来说,在32位的机器下,一个字节(1bit)等于8位,所以32位是4个字节。同理,64位下则为8个字节)

  • 指针的基本操作



/* 在声明指针的时候对其进行赋值*/
int n = 5;
int* p = &n; //这里p的值为变量n的地址

std::cout<<"打印p:"<<p<<std::endl;
std::cout<<"打印&n:"<<&n<<std::endl;
std::cout<<"打印*p:"<<*p<<std::endl;

/*对指针p指向的整数型n进行改值操作*/
std::cout<<"------对*p进行操作------"<<std::endl;
*p = 10; 

std::cout<<"打印n="<<n<<std::endl;
std::cout<<"打印*p="<<*p<<std::endl;
  

运行结果:

 


引用

C++中,一个引用就是某对象的另一可选的名字。其主要用途是为函数指定形参和返回值,特别是用于重载操作符。记法T &表示到T的引用。

 引用作为别名,实现了对目标对象名字的绑定,因此必须使用目标对象的原始名字来初始化引用。例如

  •  C++引用的初始化

 一个普通T &的初始式必须是一个类型T的左值名。能够作用在引用上的操作只有初始化,之后的操作符将全部作用在引用所指向的对象上。

 
要注意的是,这些都是合法的,但是rr++并没有对引用本身做什么增量操作;相反,++是应用到了那个int对象ii上。因此,一个引用的值在初始化之后就不可能改变了,它总是引用它被初始化时所指示的那个对象。要获得一个引用rr所指示的对象的指针,可以取地址&rr。

总结引用需要注意的点:

  1. 引用变量就是某个变量或者对象的别名
  2. 引用变量不占用内存
  3. 引用变量必须在声明时完成赋值,完成变量与引用的绑定

指针与C++引用的不同

得一个指 ,需要使用 new 或者 & 对一个指 赋值会改变 的值, 它指 不同的对象; 改指 对象的值需要使用 * 对指 进行 dereference 操作(例如:*p = 10);
得一个 用,需要使用对象的名字对 用变量进行初始化;引 用初始化后,无法 用值 它指 其他对象; 对一个 赋值将 接改变 用指 对象的值,相当于 自动执 行了 式的 dereferencec 操作。
在赋值 算上的 差异 ,是指 C++ 用的最大 别。
C++ 用功能 稍弱 ,只有指 针才 能指 不同的对象,只有指 针才 能进行算 术运 算(例如指针对数组的操作)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值