怎樣學透c的指標

時間 2022-01-10 10:04:05

1樓:毛星雲前輩再見

你現在是學不透的。

指標是c語言的精髓沒錯,可是不代表說就要玩命講。現在給你講二十節課你也理解不上去。

你只需要慢慢的跟著學校往下學就好了。指標這個概念隨著你不斷地深入學習計算機知識會變得愈發清晰起來。

2樓:頭號組織頭目

1.計算機程式執行過程中,需要做大量的運算,是需要記錄許多中間變數以及接著來需要執行的指令,所以執行中主要的記憶單元就是記憶體。

2.如何管理記憶體呢,最直觀的辦法就是根據其最小單元進行編號,但從最初的計算機發展到現在有了作業系統的概念,作業系統的記憶體管理模組中就有物理記憶體和邏輯記憶體之分,物理記憶體就涉及到管理真實的記憶體,邏輯記憶體可以理解成是乙個抽象層,他和物理層是通過作業系統記憶體管理單元有乙個對映,在具有作業系統平台上的應用程式開發過程中我們其實只需要面對邏輯記憶體,邏輯記憶體告訴每乙個應用程式,你可以擁有所有的記憶體,我把一切都給你,其實還真像乙個渣男可以同時擁有多位女朋友,然後告訴每個女朋友,你可以擁有我的一切,哈哈!我們應用程式開發過程中說的記憶體就是指邏輯記憶體,每乙個記憶體塊都具有編號-記憶體位址。

然後我們就可以通過記憶體位址去管理我們儲存的內容。

3.記憶體位址實際上就是一組數字序列,他也是可以存入變數中儲存的,所以指標這個概念就出來了,就是用來存記憶體位址的。32位系統中位址是四位元組的,64位系統中記憶體位址是8位元組,因此不同的系統中指標本身佔記憶體大小不同!

理解了指標的本質以後,就是如何靈活的使用了。

4.程式中接觸到位址的地方就可以看見指標的身影,這就不得不說C/C++的記憶體模型了。(我建議C和C++一起學,可以更好的理解從單純函式結構體到類,物件的構造過程!)待續

3樓:Captain 賀

簡單來說,指標就是表示記憶體上哪個地方的乙個數。

懂了記憶體(包括虛擬記憶體,程序位址空間),指標就只是乙個概念而已。那其實兩節課講完也沒什麼,我覺得那兩節課講得最多的還是語法。

4樓:

如果你能把下面的課程都學會,指標隨便看看就非常明白了物理學電路原理

模擬電路

數位電路

計算機架構(好像也叫計算機組成原理)

大規模積體電路設計

組合語言

作業系統

編譯原理

5樓:

結合組合語言會更容易理解,指標就是變數在記憶體中的位址。

如果人是變數,那麼住址就是指標;

根據位址可以找到人,那麼根據指標可以獲取變數值。

位址改變了,對應的人也不一樣了。指標值變了,制定的變數也可能不一樣了。

給快遞員乙個虛假的位址,快遞員找不到人。給指標分配乙個記憶體中不存在的位址,或者下標越界,可能會找到意想不到的人,也可能造成災難!

C 中如何定義指向函式指標的指標?

zr scat 瀉藥先定義乙個函式指標 typedef void pfn void 再定義指向函式指標的指標 void print void pfn func print pfn ptr func 在c 11下,可以這麼偷懶獲得型別 1 include 23using namespace std 4...

在 C 語言中指標的歷史是怎樣的?

Crazyjin 型別 變數和變數的值本來就是三個概念 一直都是三個概念。int是型別,int a 申明了乙個int型別的變數a。pointer是型別,pointer variable是pointer型別的變數。只不過這裡pointer和pointer variable沒有指明具體型別。這裡舉個具體...

C語言指標與二級指標的問題?

已登出 列印不出來是因為這條語句將嘗試訪問非法 程式不該訪問 的記憶體。printf s pt 嘗試訪問超出劃定範圍的記憶體空間,被作業系統攔下 答主重現了一下,那麼從下圖可以看出,p和pt的位址是0x00affb6c,abc 的首位址是0x00de6b30 那麼解引用pt得到的是0x00de6b3...