2016-07-29 45 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開始計數,但我想我的程序與1因此,開始在for循環,而不是x=0,我寫x=1。然後在我最後的x它開始變得怪異。

有人可以幫助我。我會很感激。謝謝

+0

「但我想我的程序開始1」。然後請從1到4,而不是5. – songyuanyao

+0

您需要修改[好書]中的數組部分(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-和 - 列表)你用來學習。最後一個數組的索引是小於它的大小的一個 – NathanOliver

+0

@NathanOliver從問題:*我知道數組是從0開始計數。* – Borgleader

回答

0

你的數組有5個元素。

x=5在循環中,您正在訪問的第六元素,讓你出數組的邊界。

1

array[5]表示具有5個元素的數組。這些元素是:

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

現在你可以將它聲明爲array[6],然後你將有一個array[5]元素。現在,您的代碼在訪問array[5]元素時應該產生分段錯誤,但這是未定義的行爲,所以誰知道該內存段屬於誰。

你得到的怪異字符是因爲該內存不屬於數組變量,可能不能被解釋爲int。希望有所幫助。

+2

s/should /可能產生了分段錯誤。 – user2079303

0

我知道,數組是從0

正確的計數。

但我想我的程序開始與1

好了,事實並非如此。正如你剛纔所說的。

因此,在for循環而不是x = 0,我寫x = 1。

根本就沒有做到這一點。

然後在我的最後x它開始是怪異。

是的,因爲您試圖訪問不存在的數組元素。

1

你應該使用以下兩種方法之一:

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

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