我在理解如何分配到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]
等?
答案 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的数组,然后你可以使用数组语法。