2016-07-29 9 views
-4

2ヶ月前にプログラミングを学び始めたばかりで、まだ初心者です。ループを使って配列のコードを書く方法を学ぶだけです。これは私のコードでした。ループを使用した配列

#include <iostream> 

using namespace std; 

int main() 
{ 
    int array[5]; 

    for(int x=1; x<=5; x++) 
     { 
     fidan[x]=16; 

     cout<<x<< " --- " << array[x]<<endl; 
     } 

    return 0; 
} 

私はその配列が0からのカウントである知っているしかし、私は私のプログラムではなくx=0のループのために、私はx=1を書きで、だから、1で開始したいです。それから私の最後のxでそれは変なことになった。

誰かが私に助けてくれますか?私はそれをお願い申し上げます。ありがとうございます

+0

を「しかし、私は私のプログラムは、1で開始したいです」それから、5ではなく1から4にしてください。 – songyuanyao

+0

[良い本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-html)の配列に関するセクションを改訂する必要があります。あなたが学ぶために使っているリストとリスト。最後の配列インデックスはそのサイズより1つ小さいです – NathanOliver

+0

@NathanOliver質問から:*配列は0から数えます。* – Borgleader

答えて

0

あなたの配列には5つの要素があります。

ループ内のx=5の場合、6番目の要素にアクセスしているため、配列の境界を超えています。

1

array[5]は、5要素の配列を意味します。これらの要素は以下のとおりです。

array[0],array[1],array[2],array[3],array[4]. 

今、あなたはarray[6]としてそれを宣言することができ、その後、あなたはarray[5]要素を持つことになります。今あなたのコードは、array[5]要素にアクセスするときにセグメンテーション違反を生成するはずですが、これは未定義の動作ですので、誰がそのメモリセグメントに属しているかを知っています。そのメモリは、配列変数に属していないと、おそらくint型として解釈することはできませんので、あなたが得る

変な文字があります。希望が役立ちます。

+2

セグメンテーション違反が発生している可能性があります。 – user2079303

0

私は、その配列が0

正しいから数える知っています。

しかし、私は私のプログラムは、まあ、それはない1

を開始したいです。あなたがちょうど言ったように。

したがって、x = 0ではなくforループで、x = 1と書いています。

単純にしないでください。

はその後、私の最後のxでそれは奇妙なことに始めました。

はい、存在しない配列要素にアクセスしようとしたためです。

1

次の2つの方法のいずれかを使用する必要があります

for (int i = 0 ; i < 5 ; i++) 
    cout << array[i] << " "; 

または

for (int i = 1 ; i <= 5 ; i++) 
    cout << array[i - 1] << " "; 
関連する問題