私は独学で C++ を学んでおり、ポインターでこのプログラムを作成しています。
15、22、16、18、27、23、および 20 という数値を miles という名前の配列に格納するプログラムを作成します。マイルで格納されたデータを 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;
}