指针与数组
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这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
挑战
简单不要更改任何默认代码。使用 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++ 在线编译器