二維數組的指針 != 指針的指針

二維數組的指針 != 指針的指針

以前一直以爲,二維數組的數組名就是一個指針的指針,直到今天一位同學問我一個相關的問題,我才醒悟。

這段代碼是編譯不通過的,提示“無法從“int (*)[3]”轉換爲“int **”。雖然二維數組可以看成是一個平面結構(如下)

a[0][0]

a[0][1]

a[0][2]

a[1][0]

a[1][1]

a[1][2]

但是實際上,數組的在內存中的存儲依然是線性的,即:

a[0][0]

a[0][1]

a[0][2]

a[1][0]

a[1][1]

a[1][2]

我們很容易就可以看出int **pint[2][3]的區別,如果僅僅定義int **p,無法知道p[0][0]p[1][0]之間差多少個元素。所以在傳參的時候,需要傳遞類似 int a[][3]字樣的值,比如:

發佈了36 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章