所以我目前正在学习c++,我只是想澄清一下我想到的一件事。
假设我有一些数组int arr[] = {1, 2, 3};
.int *arr_p = arr
与int *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)。重要的是要记住使用圆括号来解引用和使用索引来使用优先级。