C++中int *a; int &a; int & *a; int * &a

C++中指针和应用的不同混用方式往往具有截然不同的语义,所以这里详细地对几种指针和引用的混用方式进行区分,指针和引用的混用常见的如下面几种:

int i;
int *a = &i;		//这里a是一个指针,它指向变量i
int &b = i;		    //这里b是一个引用,它是变量i的引用(别名)
int * &c = a;		//这里c是一个引用,它是指针a的引用
int & *d;	        //这里d是一个指针,它指向引用,但引用不是实体,所以这是错误的

区分技巧:在分析上面代码时,可以从变量标识符开始从右往左看,最靠近标识符的是变量的本质类型,而再往左即为对变量类型的进一步修饰。

举例 :

int * & a;

标识符a的左边紧邻的是&,证明a是一个引用变量,而再往左是*,可见a是一个指针的引用,再往左是int,可见a是一个指向int类型的指针的引用。

你可能感兴趣的:(C++)