指向int数组的指针c
发布时间:2020-12-16 10:05:40 所属栏目:百科 来源:网络整理
导读:我编写了以下代码,试图了解如何使用指向数组和数组引用的指针.这是我对正在发生的事情的思考过程. arr与数组的第一个元素的地址相同. * arr告诉我该位置的int是什么,如arr [0]. p是一个指针并被赋予arr,这是第一个元素的地址.所以本质上* p与* arr相同,p [0]
我编写了以下代码,试图了解如何使用指向数组和数组引用的指针.这是我对正在发生的事情的思考过程.
> arr与数组的第一个元素的地址相同. * arr告诉我该位置的int是什么,如arr [0]. 这是我的代码: #include <iostream> using std::cin; using std::cout; using std::endl; int main() { int arr[10] = {9,18,31,40,42}; cout << "arr: " << arr << endl; cout << "*arr: " << *arr << endl; cout << "arr[0]: " << arr[0] << endl; cout << endl; int *p = arr; cout << "p: " << p << endl; cout << "*p: " << *p << endl; cout << "p[0]: " << p[0] << endl; cout << endl; int (*arrPtr)[10] = &arr; cout << "arrPtr: " << arrPtr << endl; cout << "*arrPtr: " << *arrPtr << endl; cout << "arrPtr[0]: " << arrPtr[0] << endl; cout << endl; int (&arrRef)[10] = arr; cout << "arrRef: " << arrRef << endl; cout << "*arrRef: " << *arrRef << endl; cout << "arrRef[0]: " << arrRef[0] << endl; } 这是我的输出: arr: 0xbf843e28 *arr: 9 arr[0]: 9 p: 0xbf843e28 *p: 9 p[0]: 9 arrPtr: 0xbf843e28 *arrPtr: 0xbf843e28 arrPtr[0]: 0xbf843e28 arrRef: 0xbf843e28 *arrRef: 9 arrRef[0]: 9 解决方法
* arrPtr或arrPtr [0]产生一个int类型的对象[10]
在操作符中使用<<数组被显式转换为int *类型的指针和重载运算符<<对于这样的表达式,选择const void *的参数. 你可以看到这些输出 arr: 0xbf843e28 和 *arrPtr: 0xbf843e28 arrPtr[0]: 0xbf843e28 重合. 如果要输出数组的第一个元素,则应该编写 std::cout << **arrPtr << std::endl; std::cout << ( *arrPtr )[0] << std::endl; std::cout << arrPtr[0][0] << std::endl; std::cout << *arrPtr[0] << std::endl; 为了更清楚,你可以引入一种参考方式 int ( &arrRef )[10] = *arrPtr; 然后写 std::cout << *arrRef << std::endl; std::cout << arrRef[0] << std::endl; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |