int RollNum[30][4];
int (*p)[4]=RollNum;
int *q[5];
这里,p 被声明为一个指向一个 4 元素(int 类型)数组的指针,而 q 被声明为一个包含 5
个元素(int 类型的指针)的数组。
另外,我们还可以在同一个声明中混合实用*和&,如下:
int **p1; // p1 is a pointer to a pointer to an int.
int *&p2; // p2 is a reference to a pointer to an int.
int &*p3; // ERROR: Pointer to a reference is illegal.
int &&p4; // ERROR: Reference to a reference is illegal.
注:p1 是一个 int 类型的指针的指针;p2 是一个 int 类型的指针的引用;p3 是一个 int 类
型引用的指针(不合法!);p4 是一个 int 类型引用的引用(不合法!)。
const 修饰符
当你想阻止一个变量被改变,可能会用到 const 关键字。在你给一个变量加上 const 修饰
符的同时,通常需要对它进行初始化,因为以后的任何时候你将没有机会再去改变它。例如:
const int n=5;
int const m=10;
上述两个变量 n 和 m 其实是同一种类型的--都是 const int(整形恒量)。因为 C++标准规
定,const 关键字放在类型或变量名之前等价的。我个人
更喜欢第一种声明方式,因为它更突出了 const 修饰符的作用。
当 const 与指针一起使用时,容易让人感到迷惑。例如,我们来看一下下面的 p 和 q 的声
明:
const int *p;
int const *q;
他们当中哪一个代表 const int 类型的指针(const 直接修饰 int),哪一个代表 int 类型
的 const 指针(const 直接修饰指针)?实际上,p 和 q 都
被声明为 const int 类型的指针。而 int 类型的 const 指针应该这样声明:
int * const r= &n; // n has been declared as an int
这里,p 和 q 都是指向 const int 类型的指针,也就是说,你在以后的程序里不能改变*p 的
值。而 r 是一个 const 指针,它在声明的时候被初始化指