C++ 不使用';我哪里都不参考?

C++ 不使用';我哪里都不参考?,c++,C++,以下代码段: int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 }; int(&row)[4] = ia[1]; 我弄不明白为什么这个特殊的代码是有效的。就我目前的理解而言,我没有一个合理的解释。有人能帮我吗?我的问题是&行,它似乎没有引用任何地方。我唯一的解释是,这必须是有效的,因为这是一个初始化 我从书中得到以下解释: 我们将行定义为对 四个整数 哪个阵列?我们要初始化的那个 int ia[3][4] = { 0,1,2,3,4,5,6,7,

以下代码段:

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

我弄不明白为什么这个特殊的代码是有效的。就我目前的理解而言,我没有一个合理的解释。有人能帮我吗?我的问题是
&行
,它似乎没有引用任何地方。我唯一的解释是,这必须是有效的,因为这是一个初始化

我从书中得到以下解释:

我们将行定义为对 四个整数

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

 int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
是一个由3个元素组成的数组,每个元素是一个由4个整数组成的数组

int(&row)[4] = ia[1];
int ia[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
这里的
int(&row)[4]
部分声明了一个名为row的引用,该引用可以引用4个int的数组。
=ia[1]
对其进行初始化,以引用
ia
数组中的第二个元素,即4个整数的数组

int(&row)[4] = ia[1];
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];
(从标识符开始…):

…是一个

(&row)

…参考

(&row)[4]

…到四个数组

int(&row)[4]

int

=ia[1]

…由
ia[1]
初始化(因为您必须初始化引用,无法绕过它)


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

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

“这里int(&row)[4]部分声明了一个名为row的引用,可以引用4个int的数组。”-这意味着它只能引用,但不能?或者它是否指向正在初始化的数组?@KingJulian it可以并且确实,您可以初始化它(ia[1]
部分)以引用(或者如果您愿意,则指向,但“指向”一词通常与指针一起使用,而不是引用)4个整数的数组。也许你需要通读一遍,例如。