我用兩種不同的方法找到第一個陣列的下一個陣列的地址。 在二維陣列中,兩種方法都給出了相同的下一個陣列的地址。 但在一維陣列中,兩種方法給出的地址不同。 這到底是什么原因? 我怎樣才能得到正確的答案呢?
int main()
{
cout<<"In 2D Array------>"<<endl<<;endl。
int a[4][3]={{1, 2,3}。
{4,5,6}。
{7,8,9}。
{10,11,12}}。
int b[4][3]={{1, 2,3}。
{4,5,6}。
{7,8,9}。
{10,11,12}}。
cout<<"第一個陣列的地址="<<&a<<endl<<endl。
cout<<"下一個陣列的地址="<&a 1<<endl;
cout<<"下一個陣列的地址="<<&b<<endl<<endl。
cout<<endl<<endl<<endl<<endl。
cout<<"In 1D Array----->"<<endl<<endl。
int A[]={1,2,3,4, 5};
int B[]={1,2, 3,4, 5};
cout<<"第一個陣列的地址="<<&A<<endl<<endl。
cout<<"下一個陣列的地址="<<&A 1<<endl。
cout<<"Next array的地址="<<&B<<endl<<endl。
return 0;
}
uj5u.com熱心網友回復:
對于初學者來說,編譯器將自動存盤時間的變數放置的順序是沒有規定的。所以不一定要把陣列b放在陣列a的后面,反之亦然。
其次,編譯器可以對齊陣列,例如在等于16位元組的段落邊界上。
所以相對于你的程式來說,編譯器似乎把陣列b放在了陣列a的后面,沒有任何間隙。
但是放在陣列A后面的陣列B是在16位元組的邊界上對齊的,或者是在一些其他的數值上。所以這兩個陣列定義之間有一個間隙。
你可以通過減少陣列A和B中的元素數量來做實驗
int A[]={1, 2,3,4}。
int B[]={1,2,3, 4};
uj5u.com熱心網友回復:
這不能在一個陣列和另一個陣列之間進行,因為陣列被定義在記憶體的隨機位置。
但是你可以通過把標簽放在陣列的名字后面,然后輸入[index]你想知道的元素的位置來找到陣列中所有元素的地址,這個地址根據陣列的資料型別而變化,例如,如果陣列的型別是int,增量將是16進制,在一個元素和另一個元素之間增加4位元組。 例子:
cout<<"第一個陣列的地址="<<&A[0]<<endl<<;endl。
cout<<"Next array的地址="<<&A[1]<<endl。
cout<<"Next array的地址="<<&A[2]<<endl<<;endl。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321873.html
標籤:
上一篇:回傳空白值的參考資料
