首页 > 代码库 > c++ 数组的声明(1)

c++ 数组的声明(1)

今天讨论静态数组的声明。

首先给出四个声明:

int *ptrs[10];
int *refs[10] = / ? /; 
int (*Parray)[10] = &arr;
int (&arrRef)[10] = arr;

就我理解,c++里应该这样看待一个变量的声明:

如果有括号,把括号内的内容看做一个整体,然后从右往左阅读。最右边的声明元素即是声明对象的本质。

数组声明,一般名字左侧是数组所包含元素内容,右侧是数组的大小。

所以:

  1. 没有括号,所以从右往左阅读。首先发现ptrs是个[10],也就是数组,其中的元素是int *。
  2. 从右往左阅读。refs是个[10],但是因为引用不是对象,不可能有数组,所以这个是错误的。
  3. 把括号内的元素看成一个整体,发现*Parray是一个int [10],那么parry就是一个有十个int变量的数组的指针。
  4. 同理,arrRef是一个有十个int变量的数组的引用。

小测试:猜猜下面表达式的作用?

int *(&arry)[10] = ptrs;

答案:易猜得arry是一个int *[]的引用。该表达式是将该数组的第十个对象赋值为ptrs。

今天就整理到这里。

c++ 数组的声明(1)