澄清Cpp中的数组指针



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

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

指针的行为有点不合逻辑,但我想我对它们越来越适应了。提前谢谢你。

指向三个int型数组的指针可以写成:

int arr[3] = {2, 4, 6};
int (*Parr)[3] = arr;

如果解引用Parr,则实际上可以访问整个数组,而不是数组的第一个元素。因此你可以这样写:

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

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

最新更新