C++ 引用和指针

最近开始学习c++,看《primer c++》一书,引用和指针部分,看过一遍,感觉有点模糊,故记录。

一、引用(reference)

为对象起了另一个名字,引用类型引用(refers to)另外一种类型。

定义:
将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。

注意:

引用并非对象,只是为一个已经存在的对象所起的另外一个名字。
引用必须初始化。
对引用的操作,都是在对与引用绑定的对象进行操作。

正确定义引用

int ival = 1024;
int &refVal = ival; // refVal指向inval

错误定义引用

int &refVal2 = 10; // 错误 初始值必须是对象
double dval = 3.14;
int &refVal3 = dval; // 错误 这里引用类型的初始值必须是int类型
二、指针(pointer)

指针是指向(point to)另外一种类型的复合类型。
定义
将声明符写成*d的形式,d是变量名。

指针存放某个对象的地址,我们可以通过取地址符(&)取得该地址

正确定义指针

double dval;
double *pd = &dval; // 初始值是double型对象的地址  
double *pd2 = pd; // 初始值是指向double对象的指针

错误的定义指针

int *pi = pd; // 错误 指针pi的类型和pd的类型不匹配  
pi = &dval; // 错误 试图把double型对象的地址赋给int型指针

利用指针访问对象
如果指针指向了一个对象,则允许使用解引用符(*)来访问该对象。

int ival = 42;
int *p = &ival; // 定义指针p,使p指向变量ival  
cout << *p; // 由符号*得到指针p所指的对象,输出42.
三、两者区别
  1. 指针本身就是一个对象,允许对指针赋值和拷贝。在指针的生命周期内,它可以先后指向几个不同的对象。
  2. 指针无须在定义时赋初值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值