跳转至

数组与指针

C++ 中,数组名在大多数表达式中会转换为指向首元素的指针,因此有 a == &a[0]。但数组本身不是指针,也不能给数组名赋值。

若指针 p 指向数组 a 中某个元素,则 p+1 指向它的下一个元素,p+i指向它后面第 i 个元素,p-i 指向它前面第 i 个元素。

因此,如果 p 指向 a[0] ,有 p + i == &a[i]*(p + i) == a[i]。这些指针运算只能在同一数组及其尾后位置的范围内进行,并且不能解引用尾后指针。

// 这两个写法是等价的,通常在客观题当中有这些奇怪的写法

for (int i = 0; i < n; i++) cout << a[i] << ' ';

for (int i = 0; i < n; i++) cout << *(a + i) << ' ';