哪个参考文献没有引用?

时间:2015-11-05 08:05:47

标签: c++

以下代码段:

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

https://msdn.microsoft.com/en-us/library/system.environment.newline(v=vs.110).aspx

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

我从我的书中得到了以下解释:

  

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

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

3 个答案:

答案 0 :(得分:13)

 int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };

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

int(&row)[4] = ia[1];

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

答案 1 :(得分:6)

int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };

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

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

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

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

我不太明白为什么你说我们要“初始化”它 - 此时,ia已完全初始化。

int(&row)[4] = ia[1];

Spiral rule(从标识符开始......):

row

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

(&row)

... ...参考

(&row)[4]

...到四个数组...

int(&row)[4]

... int ...

= ia[1];

...由ia[1]初始化(因为你初始化引用,没有办法解决它。)

所以row现在是ia[1]的引用,其类型为“四个数组int”。这就是它的全部内容。

答案 2 :(得分:0)

(& row)[4]意味着它可以引用4个元素的数组,而ia [1]是来自2d数组ia [] []的一行,包含4个元素,因此它可以正常工作。 / p>