参考哪个地方没有参考?

Han*_*lse 5 c++

以下代码段:

int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
int(&row)[4] = ia[1];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我无法理解为什么这个特定的代码是有效的.根据我目前的理解,我没有理性的解释.有人可以帮我解决这个问题吗?我的问题&row似乎在任何地方都没有引用.我唯一的解释是,这必须是有效的,因为它是初始化.

我的书中有以下解释:

.... 我们将row定义为对四个整数数组引用

哪个阵列?我们要初始化的那个?

nos*_*nos 13

 int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
Run Code Online (Sandbox Code Playgroud)

是一个包含3个元素的数组,每个元素是一个4个整数的数组.

int(&row)[4] = ia[1];
Run Code Online (Sandbox Code Playgroud)

这里的int(&row)[4]部分声明了一个名为row的引用,它可以引用一个包含4个int的数组.的= ia[1]初始化以引用所述第二元件中ia阵列,这是4个整数的数组.


Dev*_*lar 6

int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
Run Code Online (Sandbox Code Playgroud)

ia是一个3个数组的数组,int每个数组4 个.

ia[0]{ 0, 1, 2, 3 }.

ia[1]{ 4, 5, 6, 7 }.

ia[2]{ 8, 9, 10, 11 }.

我不太明白为什么你说我们将"即将初始化"它 - 此时,它ia已完全初始化.

int(&row)[4] = ia[1];
Run Code Online (Sandbox Code Playgroud)

螺旋规则(以标识符开头......):

row

......是......

(&row)

...参考...

(&row)[4]

...四个数组......

int(&row)[4]

... int...

= ia[1];

...初始化ia[1](因为你必须初始化一个引用,没有办法解决它).

所以row现在是一个引用ia[1],它是"四个数组int" 类型.这里的所有都是它的.