所以我目前正在学习 C++,我只是想澄清一下我想到的事情。
假设我有一些数组 int arr[] = {1, 2, 3};
。
int *arr_p = arr
和 int *arr_p = &arr[0]
一样吗?
据我了解,arr
指向第一个元素,因此具有 int *
类型,而 &arr
是指向具有不同类型的整个数组的指针。
相同的地址,不同的类型。
感觉指针的行为有点不合逻辑,但我认为我越来越习惯于使用它们。 提前致谢。
答案 0 :(得分:0)
指向三个整数数组的指针可以写成如下,
int arr[3] = {2, 4, 6};
int (*Parr)[3] = arr;
如果您取消引用 Parr,您实际上可以访问整个数组而不是数组的第一个元素。因此你可以写,
std::cout << (*Parr)[2] << std::endl;
这将允许您访问数组中的最后一个元素 (6)。重要的是要记住通过使用括号来取消引用和使用索引来使用优先级。