C++二維數(shù)組中數(shù)組元素存儲(chǔ)地址的計(jì)算疑問(wèn)講解
關(guān)于二維數(shù)組中數(shù)組元素的存儲(chǔ)地址,有同學(xué)問(wèn)出了個(gè)好問(wèn)題。
在我的課件中,出現(xiàn)了下面的講解:
a[i][j]
的地址是p+(i*col+j)*d
(d是數(shù)組元素所占的字節(jié)數(shù))。
同學(xué)編程序進(jìn)行驗(yàn)證,出問(wèn)題了:
地球停止轉(zhuǎn)動(dòng)了也必須先贊這種學(xué)習(xí)方式!
同學(xué)問(wèn):“老師,第一張圖的4,我怎么覺得不對(duì)呢?第二張圖我沒4,結(jié)果好像也對(duì),這里面差在哪呢?”
我的答復(fù):“兩個(gè)都對(duì)。”
第一張圖在講原理,是我們?cè)谌四X里面要以“字節(jié)”為單位計(jì)算,p為首地址,單位是字節(jié),再往后多少個(gè)字節(jié),必須考慮到在整型數(shù)組中每個(gè)數(shù)組元素占4個(gè)字節(jié),從首地址到a[i][j]
有(i*col+j)
個(gè)元素,計(jì)算其字節(jié)地址時(shí),乘4是必要的。
第二張圖是在計(jì)算機(jī)中的運(yùn)行結(jié)果,是已經(jīng)在計(jì)算機(jī)內(nèi)按找第幾“個(gè)”數(shù)組元素為單位計(jì)算地址值了,*4的操作,是在尋址中已經(jīng)計(jì)算過(guò)了,在此直接輸出結(jié)果。
更直白地,第一張圖中的“p+”中的加,和我們?nèi)粘K阈g(shù)中的加一樣,我們按“字節(jié)”說(shuō)事;而第二張圖中的“p+”,是C語(yǔ)言中指針的加運(yùn)算,是增加一個(gè)單元,究竟多少字節(jié),還要考慮指向的元素的數(shù)據(jù)類型,在32位系統(tǒng)中,對(duì)于整型,一個(gè)單元4字節(jié),而對(duì)于double型,一個(gè)單元8字節(jié)。
兩個(gè)加號(hào)形狀一樣,含義是不同。
這個(gè)問(wèn)題,學(xué)C/C++的同學(xué)才可能會(huì)遇到,學(xué)習(xí)C/C++中主動(dòng)尋疑驗(yàn)證的同學(xué)才會(huì)遇到??梢妼W(xué)C/C++的價(jià)值,可見主動(dòng)尋疑驗(yàn)證的價(jià)值。
想起離散數(shù)學(xué)中的代數(shù)結(jié)構(gòu),用符號(hào)任意地表達(dá)運(yùn)算,研究或設(shè)計(jì)運(yùn)算系統(tǒng),好一個(gè)“讓思緒飛揚(yáng)”和”精彩世界“,一不留神卻成了“枯燥乏味”和“與實(shí)踐無(wú)關(guān)”。
能從不同層面,不同視角看問(wèn)題,這就是自由。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- C++?使用?new?創(chuàng)建二維數(shù)組實(shí)例
- c++利用vector創(chuàng)建二維數(shù)組的幾種方法總結(jié)
- C++二維數(shù)組螺旋加密信息
- C++ 二維數(shù)組參數(shù)傳遞的實(shí)現(xiàn)方法
- C++二維數(shù)組中的查找算法示例
- C++中指針指向二維數(shù)組實(shí)例詳解
- C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實(shí)例代碼
- 詳解C++中的一維數(shù)組和二維數(shù)組
- C++指針數(shù)組、數(shù)組指針、數(shù)組名及二維數(shù)組技巧匯總
- C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)字符轉(zhuǎn)unix時(shí)間戳的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇C語(yǔ)言實(shí)現(xiàn)字符轉(zhuǎn)unix時(shí)間戳的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06C語(yǔ)言之實(shí)現(xiàn)棧的基礎(chǔ)創(chuàng)建
這篇文章主要介紹了C語(yǔ)言之實(shí)現(xiàn)棧的基礎(chǔ)創(chuàng)建,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例
本文主要介紹了Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C++實(shí)現(xiàn)訪問(wèn)者模式的基礎(chǔ)介紹
訪問(wèn)者模式表示一個(gè)作用于某對(duì)象結(jié)構(gòu)中各元素的操作,它使我們可以在不改變各元素的類的前提下定義作用于這些元素的新操作。對(duì)C++訪問(wèn)者模式相關(guān)知識(shí)感興趣的朋友一起看看吧2021-09-09C++實(shí)現(xiàn)圖的鄰接表存儲(chǔ)和廣度優(yōu)先遍歷實(shí)例分析
這篇文章主要介紹了C++實(shí)現(xiàn)圖的鄰接表存儲(chǔ)和廣度優(yōu)先遍歷,實(shí)例分析了C++實(shí)現(xiàn)圖的存儲(chǔ)與遍歷技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04c++如何控制輸出浮點(diǎn)數(shù)小數(shù)點(diǎn)后若干位
這篇文章主要介紹了c++如何控制輸出浮點(diǎn)數(shù)小數(shù)點(diǎn)后若干位問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09VC實(shí)現(xiàn)五子棋游戲的一個(gè)算法示例
這篇文章主要介紹了VC實(shí)現(xiàn)五子棋游戲的一個(gè)算法示例,對(duì)于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的朋友有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08