請問如何結合一維陣列和記憶體還有矩形的長的那條邊來理解指標?

時間 2021-06-03 03:53:10

1樓:悽臨雨

不如了解一下矩形的寬度的意義,實際上寬度沒什麼意義。

你可以以1個位元組為寬度,也可以以4位元組、16位元組或64位元組、64KB為寬度。

4位元組是最常見的各種32位變數的寬度

16位元組是十六進製制編輯器常用寬度

64位元組是cache line寬度

64KB是頁寬度

就算是一維陣列也有寬度,寬度是元素的大小,比如int對應4位元組二維陣列=一維陣列的一維陣列

三維陣列=二維陣列的一維陣列

記憶體操作指令只給出了以位元組為單位的數值作為引數,所以指標必定是位元組的倍數,另外部分記憶體操作指令要求它的引數是4或8位元組甚至16位元組的倍數。

指標本質是個整數(記憶體位址的編碼)並附帶有型別資訊,在記憶體晶元層面只有整數(記憶體位址),在cpu指令層面可以把任意整數當做乙個x位的整數或浮點型別的記憶體位址,在語言層面它還攜帶著語言內定義的目標值的型別資訊

2樓:

維基百科:

指標,記憶體位址,主儲存器,時序脈衝。

當初我理解的時候就維基百科把這4個看完且都理解了,花了一天就明白了。

當然也不包括這些,因為這裡面還會包含你不知道的知識,大概了解一下就行。

最後指標就是乙個指向記憶體空間位址的玩意兒,他可以訪問裡面的資料

3樓:

「指標」的本質就是「儲存記憶體位址的變數」,僅此而已。只不過有的變數儲存整數,有的變數儲存字元,「指標」這個變數儲存的是記憶體位址罷了。

#include

intmain

(int

argc

,char

*argv)

4樓:gmsj0001

首先,你有個記憶體

32位系統下,每個程式(程序)在應用層都可以使用2GB大小的記憶體空間,位址從0到7FFFFFFF

然後你需要知道,你定義每乙個變數,都需要在記憶體中分配空間。

你定義了乙個int a,編譯器就在2G的記憶體中分配4個位元組給你用,比如它選了402000-402003這塊空間。a的位址就是402000,長度是4。

然後你又定義了乙個int *p,編譯器又要在2G的記憶體中分配4個位元組來表示這個變數,比如它選了403000-403003這塊空間。即位址403000長度4的記憶體就是p變數。

指標並不複雜,也完全不抽象,只需要把剛學程式設計時對變數「盒子」的概念換成記憶體中第多少個「格仔」的概念,就可以了。

5樓:tetradecane

指標本質其實很簡單。矩形只是用來輔助理解的圖示法。我建議把記憶體當做巨大一維陣列來理解。

另外,學指標要多看例程,寫程式,跑程式,有實際的親身體會為佳,而不僅僅是看那些抽象的、乾巴巴的描述性文字,不知所云。

tetradecane:C語言——指標

如何理解一維指標陣列指向二維指標

szouc 兩個重要的基本概念偶爾會在教材中被忽視。1.陣列名出現在表示式中會隱式轉換成指向該陣列第乙個元素的常量指標。特殊情況暫忽略。2.解引用 運算子與下標 運算子等價,a 3 a 3 c 2 4 c 2 4 c 2 4 題目中 int c 4 是指標陣列,當陣列名 c 出現在表示式中,根據 1...

Hadoop 和 BI 如何結合?搭建乙個基於 Hadoop Hive 的資料倉儲,它的前端展現如何實現?如何實現 BI?

Kyligence Hadoop之上一般用Hive來作為資料倉儲進行OLAP計算與儲存。但Hive與前端BI展現層之間天生就隔著一層障礙。Hive比較適合做資料處理與儲存,但是在其上做資料查詢,可以說慢得無法忍受 我們不可能每發一條查詢,就去喝一杯咖啡吧 因此通常會有三種方案來實現BI 實際當然不止...

請問如何做到知行合一?又怎麼才能改掉好為人師的毛病呢?

江山與美 斗膽好為人師一次,我想談談這個問題,請大佬輕噴。關於好為人師這點,可以分為兩部分來說。為什麼人們喜歡好為人師?首先高估自己是乙個普遍現象。覺得自己比別人厲害,那麼指點別人就是順理成章的了,在教小後生的時候,一邊鄙視人家什麼也不懂,一邊自我陶醉 看哥多厲害,什麼都懂。那種成就感,優越感,自豪...