C語言之指標的再次理解

2021-07-13 15:14:29 字數 1200 閱讀 4860

c語言指標的一些理解

一,   再一次理解指標的緣由是在做資料結構的題目的時候無意中的這次程式的除錯,見下圖,程式執行沒有問題,無意之下進行了除錯,遇見了這個問題。(expression cannot be evaluated無法計算表示式的值)(更好的閱讀體驗,請移步我的個人部落格)

二, 若是一下子看不出來為何,那就還是先從指標談起吧

什麼是指標呢?我的理解是指標是乙個值,和普通變數沒有區別,只是指標的值是乙個位址,而普通變數的值是一些我們常見的型別如int,其實都是一樣的。

比如說int a,int *p,這時候你將a的位址賦給p,那你就能通過p取到a的值。

注意,指標是有指向型別的,要時刻注意指標指向型別的記憶體空間大小和指標本身所佔空間大小的區別,下圖是個示例可以看出來區別:

三,那麼既然知道了這兩者有區別,下面使用malloc進行記憶體分配也就清楚了,看下圖:(注意一下注釋部分)

四, 當申請的為結構體變數時,結構體變數中又有指標時,會出現什麼問題呢?看下圖:

請注意,上圖並非是錯誤,是除錯過程中,編譯器顯示的各個變數的情況。這裡申請的記憶體,由兩部分組成,一是a,b的記憶體大小,二是指向結構體的乙個指標!

請注意與下面這幅圖的區別:乙個申請的是結構體變數的空間,乙個是指向結構體變數指標的空間:

五,那下面的這個,估計也就知道為何了:

C語言 之 指標初步理解

c語言之指標 指標是c語言的靈魂所在,也為程式設計師提供了一種訪問變數位址的方式。那啥是指標?指標就是變數的位址,說白了就是這個變數儲存在哪個位置,你可以通過指標檢視,所以學習指標記住一句話 指標就是位址。例如 int number int pointer a 這是一種把變數位址賦給指標的方法 第二...

c語言之指標陣列理解一

直接給出demo和記憶體圖進行分析 列印指標陣列 這裡為什麼要定義為二級指標 首先,陣列本身就是乙個一級指標,在加上定義的是指標陣列,也就是儲存的資料是指標,所以是二級指標 void printarrydata char arry,int cnt 對指標陣列進行排序 void sortarrydat...

C語言之指標

指標型別的本質分析 1 指標的本質 指標的本質 一種復合的資料型別。下面我將以下面幾個作為例子進行展開分析 a int p b int p c int parvalue 3 d int pfun 分析 所謂的資料型別就是具有某種資料特徵的東東,比如資料型別char,它的資料特徵就是它所佔據的記憶體為...