Menu
CoddyTech

指针与数组

Coddy C++ 指针 课程的第 6 课,共 14 课。

现在你已经了解了常量指针和指向常量的指针,也知道了它们之间的区别,接下来我们来看看指针和数组之间的关系。

声明数组时,数组名实际上是一个指向非常量值的常量指针,因此指针指向的地址是常量,不能更改,而它保存的值可以更改。 

如果我们有 int list[10];,这里的 list 实际上是 int * const,而且 list 的值实际上与 &list[0] 相同。


int list[] = {10, 20, 30, 40, 50};
cout << "First: " << *list << endl;
cout << "Third: " << *(list + 2) << endl;
int *ptr = list;
cout << "First again: " << *ptr;
Output:
First: 10
Third: 30
First again: 10

如你所见,我们可以把数组名 list 当作指向第一个元素的指针,并执行所需的操作。直接使用数组指针的唯一缺点是我们不能更改它;而创建指针 ptr,使它指向与 list 相同的内存后,我们就可以在程序后续部分更改它的位置,例如:


int list[] = {10, 20, 30, 40, 50};
int *ptr = list;
for(int i = 0; i < 5; i++)
    cout << *ptr++ << " ";
Output:
10 20 30 40 50

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

challenge icon

挑战

简单

不要更改任何默认代码。使用 numbers 指针创建了一个名为 numbers 的数组,并通过解引用打印数组中的所有偶数元素,元素之间用空格分隔。

亲手试试

#include <iostream>

using namespace std;

int main() {
    // 不要修改下面的代码
    int n, x;
    cin >> n;
    int numbers[n];
    for(int i = 0; i < n; i++)
        cin >> numbers[i];
    // 不要修改上面的代码

    // 在这里输入你的代码

    return 0;
}

C++ 指针中的所有课

自己练习: C++ 在线编译器