如何分配数组int(*& Test)[10]?

时间:2014-11-03 04:57:17

标签: c++ arrays pointers reference

我在理解如何分配到Test数组时遇到问题,如下所示:
int (*&Test)[10] = Parray; Test是指向十个整数数组的指针。

我得到的错误如下:

  

错误:分配' int *'中的不兼容类型到' int [10]' |。

我完成了我的研究而没有完全理解这一点。我正在阅读C ++ Primer第5版。

int main() {
  int arr[10];
  int n = 5;
  int *ptr1 = &n;
  int arr2[10];
  int *ptrs[10]; // ptrs is an array of ten pointers

  // Parray points to an array of ten ints
  int (*Parray)[10] = &arr;
  // arrRef refers to an array of ten ints
  int (&arrRef)[10] = arr2;

  // Test is a reference to a pointer to an array of ten ints.
  int (*&Test)[10] = Parray;

  // How can I assign to Test[0..1..2..etc]?
  // This is what I am trying to do:
  Test[0] = ptr1; // Error here

  return 0;
}

如何分配给Test[0]等?

2 个答案:

答案 0 :(得分:2)

使用以下表达式声明

Test[0][0] = *ptr1; 

表达式Test[0]的类型为int [10]。因此,Test[0][0]的类型为int,而*ptr1的类型为int当然,ptr1应具有可以取消引用的有效值。

答案 1 :(得分:1)

应该是:

(*Test)[0] = 3;
(*Test)[1] = 5;

等。或者你可以写Test[0][0] = 3; Test[0][1] = 5;,但我认为不太清楚。

Test是与Parray相同类型的引用。解除引用会给出一个10 int的数组,然后你可以使用数组语法。