C++我能否创建一个指向数组的指针? 能。

4
在C++中如何创建一个指向数组的指针?我的理解是我们有一个指向数组第一个元素的指针,但是如果我们想要一个指向那个指针的指针会怎么样呢?
int arr[3] = { 1, 2, 3 };
auto arrp = &arr;

cout << arr << " " << arrp << endl;
cout << typeid(arr).name() << " " << typeid(arrp).name() << endl;

// 0115FC24 0115FC24
// int [3] int (*)[3]

使用auto关键字/尝试使用它似乎可以实现,但我无法键入int (*)[3] arrp = &arr;

有没有一种方法可以键入它?


1
我建议你查找“右手定则”。 - Galik
1
你可能并不想这样做。在 C 和 C++ 中,数组在使用时会衰减为指向它们第一个元素的指针。如果你想要有多个长度为 3 的“数组”,只需分配一个缓冲区(不要在堆栈上!)包含 3*n 个元素,并指向其中。我还建议阅读C FAQ 关于数组和指针的部分 - einpoklum
1个回答

6

数组指针和函数指针的语法比较奇怪。

int (* arrp2)[3] = &arr;

感谢大家,本文解释了函数指针和奇怪的C++语法中的右左规则:[链接](https://www.codeproject.com/articles/7042/how-to-interpret-complex-c-c-declarations#:~:text=The%20right-left%20rule%20%5BImportant%5D%20This%20is%20a%20simple,parentheses%2C%20go%20right%2C%20and%20then%20go%20left.%20) - JCK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接