引用和指针

引用:

引用为对象起了另外一个名字,且引用必须初始化。程序把引用和它的初始值绑定在一起,而不是把初始值拷贝给引用。

且一旦引用绑定后则不能再将它绑定给另外一个变量。

(引用就是别名:像每个人有大名小名一样,引用只是一个已经存在的对象所起的另外一个名字)

定义一个引用后,对其所有的操作都是在与之绑定的对象上进行的

#include <iostream>
using namespace std;

int main()
{
        int i =123;
        int& i2 = i;

        --i2;

        cout<<i<<endl;

}

输出结果是122

 

指针:

与引用类似,指针也实现了对其他对象的间接访问。指针与引用的不同点在于:

1 指针本身就是一个对象,允许对其进行赋值和拷贝

2 指针无需在定义时赋予初值,和其他内置类型一样,在块作用域定义的指针如果没有被初始化,也将拥有一个不确定的值

 

指针存放某个对象的地址,想要获得该地址要使用取地址符(&)

int* p = &val;

指针值:

1 指向一个对象

2 指向紧邻对象所占空间的下一个位置

3 空指针,意味着指针没有指向任何对象

4 无效指针。

空指针:

int* p1 = nullptr;

void* 指针,void* 是一种特殊的指针类型,可以用于存放任意对象的地址。一个void* 指针存放着一个地址,但我们对该地址里存放的到底是一个什么类型的变量不了解,所以不能直接操作void* 指针所指的对象。

 

指向指针的指针:

int val = 1024;
int* pi = &val;
int** ppi = &pi;

指向指针的引用:

int i = 42;
int* p; //p是一个int型的指针
int*& r = p;//r是一个对指针p的引用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值