Cpp 中的澄清数组指针

时间:2021-08-01 15:42:23

标签: c++ arrays pointers

所以我目前正在学习 C++,我只是想澄清一下我想到的事情。

假设我有一些数组 int arr[] = {1, 2, 3};
int *arr_p = arrint *arr_p = &arr[0] 一样吗?
据我了解,arr 指向第一个元素,因此具有 int * 类型,而 &arr 是指向具有不同类型的整个数组的指针。
相同的地址,不同的类型。

感觉指针的行为有点不合逻辑,但我认为我越来越习惯于使用它们。 提前致谢。

1 个答案:

答案 0 :(得分:0)

指向三个整数数组的指针可以写成如下,

int arr[3] = {2, 4, 6};

int (*Parr)[3] = arr;

如果您取消引用 Parr,您实际上可以访问整个数组而不是数组的第一个元素。因此你可以写,

std::cout << (*Parr)[2] << std::endl;

这将允许您访问数组中的最后一个元素 (6)。重要的是要记住通过使用括号来取消引用和使用索引来使用优先级。