中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中二維數組的地址是如何分布的

發布時間:2021-06-17 17:59:01 來源:億速云 閱讀:352 作者:chen 欄目:編程語言

這篇文章主要講解了“C++中二維數組的地址是如何分布的”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++中二維數組的地址是如何分布的”吧!

在數組專題的文章講解中,講到了二維數組的地址分布情況,之后也陸續有錄友與我交流這個問題,這幾天抽空去做一下實驗,發現在C++中二維數組的地址空間是連續的。

所以單獨發文來講一講這個問題。

C++測試代碼如下:

// 測存儲地址 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進制,可以看出二維數組地址是連續一條線的。

一些錄友可能看不懂內存地址,我就簡單介紹一下, 0x7ffee4065820 與 0x7ffee4065824  差了一個4,就是4個字節,因為這是一個int型的數組,所以兩個相信數組元素地址差4個字節。

0x7ffee4065828 與 0x7ffee406582c 也是差了4個字節,在16進制里8 + 4 = c,c就是12。

如圖:

C++中二維數組的地址是如何分布的

可以看出在C++中二維數組在地址空間上是連續的。

像Java,Python是沒有指針的,同時也不對程序員暴漏其元素的地址,尋址操作完全交給虛擬機。

所以看不到每個元素的地址情況,這里我以Java為例,也做一個實驗。

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

這里的數值也是16進制,這不是真正的地址,而是經過處理過后的數值了,我們也可以看出,二維數組的每一行頭結點的地址是沒有規則的,更談不上連續。

所以Java的二維數組可能是如下排列的方式:

C++中二維數組的地址是如何分布的

總結

不同編程語言的數據結構在地址中的分布方式是不一樣的,C++中我們是可以直接獲取元素的地址,通過實驗,我們也證實了二維數組的元素確實是相鄰的。

在其他語言中,并沒有指針,也獲取不到每個元素的地址,以Java為例,通過實驗可以推測可能Java里的二維數組是不相鄰的。

這里算是對之前講解數組內容的一個糾正,也是給大家做一個科普。

大家可以發現C++賦給程序員足夠的自由,這也是C++的魅力所在。

感謝各位的閱讀,以上就是“C++中二維數組的地址是如何分布的”的內容了,經過本文的學習后,相信大家對C++中二維數組的地址是如何分布的這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

沅陵县| 江阴市| 精河县| 辽中县| 托里县| 隆化县| 湛江市| 洪洞县| 达孜县| 饶平县| 彭阳县| 黄山市| 远安县| 九龙县| 尚义县| 涿州市| 湖口县| 化州市| 富民县| 临沧市| 山丹县| 隆昌县| 日照市| 余干县| 繁昌县| 长岭县| 宁国市| 利津县| 唐山市| 平乐县| 石狮市| 任丘市| 陇南市| 清丰县| 同德县| 千阳县| 夏邑县| 奉贤区| 汝城县| 北京市| 宁国市|