阅读代码的时候,常会见到两种格式的指针或引用声明

// 第一种,*与变量名挨着
int *p;
// 第二种,*与类型名挨着
int* p;

两种写法对编译器来说没区别,但是体现了写代码人的两种观点。

第一种,与变量名挨着,是写代码的人认为修饰变量名。int *p声明了一个int类型的变量*p*表示p是一个指针。

第二种,与类型名挨着,写代码的人认为修饰类型名。int* p声明了一个int*类型的变量pint*表示指向int类型的指针。

第一种观点是对的。该观点也可以扩展到引用。

C++声明结构为:className varName*&等修饰符是varName的一部分。

所以多指针声明时int *p1, *p2, ...才合法

更进一步,根据className varName这个格式,明确修饰符是varName的一部分后,很多复合修饰符就容易解读了。

int *&p,首先声明了一个int类型的变量*&p*表示&p是一个指针&表示p是一个引用,所以p是一个int类型指针引用

如果觉得我的文章对你有用,请随意赞赏