C++二維數(shù)組中數(shù)組元素存儲地址的計算疑問講解
關(guān)于二維數(shù)組中數(shù)組元素的存儲地址,有同學(xué)問出了個好問題。
在我的課件中,出現(xiàn)了下面的講解:

a[i][j]的地址是p+(i*col+j)*d(d是數(shù)組元素所占的字節(jié)數(shù))。
同學(xué)編程序進行驗證,出問題了:

地球停止轉(zhuǎn)動了也必須先贊這種學(xué)習(xí)方式!
同學(xué)問:“老師,第一張圖的4,我怎么覺得不對呢?第二張圖我沒4,結(jié)果好像也對,這里面差在哪呢?”
我的答復(fù):“兩個都對?!?/p>
第一張圖在講原理,是我們在人腦里面要以“字節(jié)”為單位計算,p為首地址,單位是字節(jié),再往后多少個字節(jié),必須考慮到在整型數(shù)組中每個數(shù)組元素占4個字節(jié),從首地址到a[i][j]有(i*col+j)個元素,計算其字節(jié)地址時,乘4是必要的。
第二張圖是在計算機中的運行結(jié)果,是已經(jīng)在計算機內(nèi)按找第幾“個”數(shù)組元素為單位計算地址值了,*4的操作,是在尋址中已經(jīng)計算過了,在此直接輸出結(jié)果。
更直白地,第一張圖中的“p+”中的加,和我們?nèi)粘K阈g(shù)中的加一樣,我們按“字節(jié)”說事;而第二張圖中的“p+”,是C語言中指針的加運算,是增加一個單元,究竟多少字節(jié),還要考慮指向的元素的數(shù)據(jù)類型,在32位系統(tǒng)中,對于整型,一個單元4字節(jié),而對于double型,一個單元8字節(jié)。
兩個加號形狀一樣,含義是不同。
這個問題,學(xué)C/C++的同學(xué)才可能會遇到,學(xué)習(xí)C/C++中主動尋疑驗證的同學(xué)才會遇到??梢妼W(xué)C/C++的價值,可見主動尋疑驗證的價值。
想起離散數(shù)學(xué)中的代數(shù)結(jié)構(gòu),用符號任意地表達運算,研究或設(shè)計運算系統(tǒng),好一個“讓思緒飛揚”和”精彩世界“,一不留神卻成了“枯燥乏味”和“與實踐無關(guān)”。
能從不同層面,不同視角看問題,這就是自由。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- C++?使用?new?創(chuàng)建二維數(shù)組實例
- c++利用vector創(chuàng)建二維數(shù)組的幾種方法總結(jié)
- C++二維數(shù)組螺旋加密信息
- C++ 二維數(shù)組參數(shù)傳遞的實現(xiàn)方法
- C++二維數(shù)組中的查找算法示例
- C++中指針指向二維數(shù)組實例詳解
- C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實例代碼
- 詳解C++中的一維數(shù)組和二維數(shù)組
- C++指針數(shù)組、數(shù)組指針、數(shù)組名及二維數(shù)組技巧匯總
- C++中的不規(guī)則二維數(shù)組實現(xiàn)代碼
相關(guān)文章
一文帶你了解C語言中的0長度數(shù)組(可變數(shù)組/柔性數(shù)組)
眾所周知,?GNU/GCC?在標(biāo)準(zhǔn)的?C/C++?基礎(chǔ)上做了有實用性的擴展,?零長度數(shù)組(Arrays?of?Length?Zero)?就是其中一個知名的擴展,本文就來聊聊零長度數(shù)組的相關(guān)知識吧2023-03-03
C/C++實現(xiàn)7bit與8bit編碼互相轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了如何使用C/C++實現(xiàn)7bit與8bit編碼互相轉(zhuǎn)換功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10

