我正在自学 C++,并在指针上编写这个程序:
编写一个程序,将以下数字存储在名为 miles 的数组中:15、22、16、18、27、23 和 20。让您的程序将存储在 miles 中的数据复制到另一个名为 dist 的数组中,然后将值显示在dist 数组。您的程序在复制和显示数组元素时应使用指针表示法。
所以我解决了这个问题,我的代码如下。在我的 while 循环中,我有以下语句: while(ptr1 < miles + SIZE)
. 如果将此语句更改为while(ptr1 < ptr1 + SIZE)
并运行它,则会出现分段错误。为什么?尽管英里是一个数组,但我知道它实际上是一个指针。如果你这样做cout << ptr1;
和cout << miles;
,输出将是相同的。有人可以解释一下吗?谢谢你。
#include<iostream>
#include<iomanip>
using namespace std;
void prob4()
{
int miles[] = {15, 22, 16, 18, 27, 23, 20};
const int SIZE = sizeof(miles)/sizeof(miles[0]);
int dist[SIZE] = {0};
int *ptr1 = miles;
int *ptr2 = dist;
while(ptr1 < miles + SIZE)
{
*ptr2 = *ptr1;
ptr2++;
ptr1++;
}
for(int i=0; i < SIZE; i++)
cout << setw(4) << dist[i];
cout << endl;
return;
}
int main()
{
prob4();
return 9;
}