【发布时间】:2017-01-27 01:32:10
【问题描述】:
我正在尝试使用指针遍历一个常量整数数组。我的代码如下:
void printArrayPointer(const int arr[], int n){
for (int *i = arr; i < arr + n; i++) {
cout << *i << ' ';
}
}
这给了我一个错误,告诉我从 const int* 到 int* 的转换无效。我知道如何使用按索引遍历来做到这一点(就像使用数组中元素的索引一样),但我正在尝试对这段代码使用指针。
【问题讨论】:
-
听听编译器告诉你什么。为什么不将
i声明为指向const int的指针? -
使用
const int*而不是int*。 -
那行得通。这是怎么可能的,因为我每次通过 for 循环时都清楚地增加 i ?
-
i不是 const 但它指向的是。您可以增加它但不能取消引用它并更改它。 -
@Evan 如果你声明了指针
const int * const i;,你将无法递增指针