這篇文章主要講解了“C++中二維數(shù)組的地址怎么分布”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++中二維數(shù)組的地址怎么分布”吧!
創(chuàng)新互聯(lián)公司主營五峰網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),五峰h5微信平臺(tái)小程序開發(fā)搭建,五峰網(wǎng)站營銷推廣歡迎五峰等地區(qū)企業(yè)咨詢C++測試代碼如下:
// 測存儲(chǔ)地址 void test_arr() { int array[2][3] = { {0, 1, 2}, {3, 4, 5} }; cout << &array[0][0] << " " << &array[0][1] << " " << &array[0][2] << endl; cout << &array[1][0] << " " << &array[1][1] << " " << &array[1][2] << endl; } int main() { test_arr(); }
測試地址為
0x7ffee4065820 0x7ffee4065824 0x7ffee4065828 0x7ffee406582c 0x7ffee4065830 0x7ffee4065834
注意地址為16進(jìn)制,可以看出二維數(shù)組地址是連續(xù)一條線的。
一些錄友可能看不懂內(nèi)存地址,我就簡單介紹一下, 0x7ffee4065820 與 0x7ffee4065824 差了一個(gè)4,就是4個(gè)字節(jié),因?yàn)檫@是一個(gè)int型的數(shù)組,所以兩個(gè)相信數(shù)組元素地址差4個(gè)字節(jié)。
0x7ffee4065828 與 0x7ffee406582c 也是差了4個(gè)字節(jié),在16進(jìn)制里8 + 4 = c,c就是12。
如圖:
可以看出在C++中二維數(shù)組在地址空間上是連續(xù)的。
像Java,Python是沒有指針的,同時(shí)也不對程序員暴漏其元素的地址,尋址操作完全交給虛擬機(jī)。
所以看不到每個(gè)元素的地址情況,這里我以Java為例,也做一個(gè)實(shí)驗(yàn)。
public static void test_arr() { int[][] arr = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}, {9,9,9}}; System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); }
輸出的地址為:
[I@7852e922 [I@4e25154f [I@70dea4e [I@5c647e05
這里的數(shù)值也是16進(jìn)制,這不是真正的地址,而是經(jīng)過處理過后的數(shù)值了,我們也可以看出,二維數(shù)組的每一行頭結(jié)點(diǎn)的地址是沒有規(guī)則的,更談不上連續(xù)。
所以Java的二維數(shù)組可能是如下排列的方式:
感謝各位的閱讀,以上就是“C++中二維數(shù)組的地址怎么分布”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++中二維數(shù)組的地址怎么分布這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!