C++ | 引用和指针

引用(reference)

引用(reference)是给对象起的另一个名字,引用本身不是对象,而是对象的别名。

引用类型定义语法如下:

int A = 9;
int &refA = A;		// refA是A的引用,及refA是A的别名
int &refA2;			// 报错:引用必须被初始化

一般初始化变量时,是把初始值拷贝到新建的对象中。然而定义引用是,程序会把引用和初始值绑定在一起,而不是把初始值拷贝给引用。初始化完成时,引用就与其初始值对象一直绑定在一起,因此引用定义时必须被初始化且引用定义后无法再绑定其他对象。

指针(pointer)

指针是指向另一种类型的符合类型。指针与引用都实现了对其他对象的间接访问。

指针与引用的不同点。第一,指针本身是对象,可以对指针进行赋值和拷贝操作;第二指针无需在声明时初始化。

指针类型定义语法:

int A = 9;
int *pA = &A;	// 定义指针pA并将其指向A的地址
int *pB;		// 定义指针pB

Tips:

指针变量的大小取决于编译器,在64位编译器中对指针变量进行sizeof()操作值为8,在32位编译器中则为4。

利用指针访问对象需要对指针进行解引用操作,解引用符(操作符*)

int A = 9;
int *pA = &A;	// 定义指针pA并将其指向A的地址
*pA = 99;		// A的值变为99

指向指针的指针

int A = 9;
int *pA = &A;	// pA指向一个int类型的数
int *ppA = &pA;	// ppA指向一个int类型的指针

三者关系如下:

就像接引一个指向int类型的指针会得到一个int类型的数一样,解引用一个指向指针的指针会得到一个指针。也就是说*ppA会得到pA,若要得到A就需要对指针的指针进行两次解引用,及**ppA。

指向指针的引用

顾名思义,指向指针的引用就是指针变量的别名,使用语法如下:

int A = 9;
int *pA = &A;
int *&ref = pA;		// ref就是对指针pA的引用

const的引用

const定义常量对象,所以const的引用是对常量对象的引用。使用语法如下:

const int A = 9;
int C;
const int &refA = A;	// 定义常量引用
refA = 99;				// 报错:refA是常量对象的别名,而常量对象不可修改
int &refB = A;			// 报错:试图让一个非常量引用指向一个常量对象
const int &refC = C;	// 允许将const int&绑定到一个普通的int对象上

指针和const

指向常量的指针,使用语法如下:

const int A = 9;
int *pA = &A;			// 错误:pA是一个普通指针
const int *pB = &A;		// 正确
*pB = 99;				// 错误:pB指向一个常量,所以不能给*pB赋值

const指针

指针是一个对象,因此也能将指针声明为常量指针,与其他常量对象一样,常量指针必须在声明时初始化,语法如下:

int A = 9;
int *const pA = &A;			// pA将一直指向A
const int *const pB = &A;	// pB是一个指向常量对象的常量指针

划重点

pA与pB都是常量指针,但指向的对象不同。如何通过声明语法来区分呢。

从右向左阅读的方法,int *const pA 中pA的左边是const,则表示pA是一个常量对象,声明符中的下一个符号是*,则表示pA是一个常量指针。最后,声明语句的基本数据类型部分确定了常量指针指向的是一个int对象。与pA相似的pB也是一个常量指定,但其指向一个int类型常量。

常量指针和指针常量。常量指针如上,表示指针是一个常量对象,即指针必须在声明时初始化,且一直指向初始化的变量。

在了解指针常量前我们先来学习其声明语法:

  int A = 9;
  const int *pA = &A;	// 声明指针常量
  *pA = 10;				// 报错

从右向左阅读的方法来理解const int *pA,pA的左边是操作符*,这表示pA是一个指针对象,声明语句的基本数据类型部分确定了pA指向一个int类型的常量对象。

常量指针与指针常量小结:

常量指针(int *const pA = &A;):指针对象不可修改,但指针指向的对象可以修改;

指针常量(const int *pA = &A;):指针对象可以修改,但指针指向的对象不可修改。

#c++学习##c++指针##c++引用#
全部评论

相关推荐

安静的垂耳兔在泡澡:ks已经第八次投递了,它起码挂了还让你再投,不错了
点赞 评论 收藏
分享
尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务