#include <iostream>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
// 定义指针常量指向数组首元素
int * const ptr = arr;
int sum = 0;
// 通过指针常量遍历数组并求和
for (int i = 0; i < 5; ++i) {
sum += *(ptr + i);
}
std::cout << "数组元素的和为: " << sum << std::endl;
return 0;
}
指针常量与普通指针在操作数组时的区别
- 指针常量:
- 指针常量一旦初始化后,其指向就不能再改变。例如上述代码中
int * const ptr = arr;
,ptr
始终指向arr
数组的首元素,后续不能再让ptr
指向其他地址。
- 可以通过指针常量来访问和修改其所指向数组的元素,如
*(ptr + i)
这种方式访问并可修改元素值。
- 普通指针:
- 普通指针的指向可以随意改变。例如
int *ptr; ptr = &arr[0];
,之后可以通过ptr = &arr[1];
等方式改变指针的指向。
- 同样可以通过普通指针访问和修改其所指向数组的元素。普通指针在灵活性上更强,适用于需要动态改变指向的场景,而指针常量适用于需要固定指向某个数组首地址,防止误操作改变指针指向的场景。