指针与数组

数组实际上就是一个指向一段连续内存空间的指针。在很多情况下,指针与数组可以互换使用。例如一个指向数组起始位置的指针,可以通过加减运算或者索引来访问数组元素。例如:

#include <iostream>

int main() {
    int arr[3] = {10, 20, 30};
    int *p;

    p = arr; // 将数组地址赋予指针
    for (int i = 0; i < 3; i++) {
        std::cout << *ptr << std::endl;
        ptr++; // 向后移动一个位置,指向下一个元素
    }
    return 0;
}

虽然数组就是一个指向连续内存空间的指针,但是数组变量不能被修改地址值,例如arr++是不允许的;但可以使用的地址操作表达式是*(arr + 2) = 50,即将地址偏移两个单位的位置赋值为新值,这个表达式能够成功执行的原因是没有改变 arr 中保存的地址值。