2015-09-27 102 views
-2
#include <iostream> 
using namespace std; 
int main() 
{ 
    int arr1[4]; 
    int arr2[4]; 
    for (int i = 0;i<=4;i++) 
    { 
     cin>>arr1[i]; 
     arr2[i]=arr1[i]; 
    } 
    for(int j = 0;j<=4;j++) 
    { 
     cout<<arr1[j]<<" "; 
     cout<<endl; 
    } 
    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

結果:有人可以向我解釋這個C++數組嗎?

enter image description here

有人能向我解釋爲什麼arr[0] = 5?我無法弄清楚。

+1

你沒有'arr',只有'arr1'和'arr2'。 – MikeCAT

回答

2

當訪問i=4時,您訪問了界限。 arr1arr2只有4個元素。即arr1[0], arr1[1], arr1[2], arr1[3]arr2[0], arr2[1], arr2[2], arr2[3]

你的編譯器可能只是arr2後分配arr1,而不期而遇arr2 + 4有相同的地址arr1,所以獲得arr2[4]寫的值arr1[0]

+0

以及即時通訊嘗試測試複製一個數組到另一個數組可以建議我如何進行這方面的方式,我刪除了'arr2 [i] = arr1 [i]'現在它顯示正確。 – Allahuakbar

+0

只需爲'arr1'和'arr2'分配足夠的內存。 'int arr1 [5]; int arr2 [5];' – MikeCAT

+0

謝謝你!現在就開始編碼 – Allahuakbar

相關問題