C語言指針學(xué)習(xí)經(jīng)驗總結(jié)淺談
這篇C語言指針學(xué)習(xí)經(jīng)驗總結(jié)主要是我入職以來學(xué)習(xí)C指針過程中的點滴記錄。文檔里面就不重復(fù)書上說得很清楚的概念性東西,只把一些說得不清楚或理解起來比較費解的東西做一下講解,希望能達到以下三個目的
1.通過寫這些東西,把我腦袋中關(guān)于C的模糊的知識清晰化。
2.給初轉(zhuǎn)C的同事們一點提示和幫助。
3.也希望各位前輩檢查一下文檔中是否有理解偏差的地方。
1 指針的概念分解
指針是一個特殊的變量,它里面存儲的數(shù)值被解釋成為內(nèi)存里的一個地址。 要搞清一個指針需要搞清指針的四方面的內(nèi)容:
1.指針的類型
2.指針所指向的類型
3.指針的值或者叫指針所指向的內(nèi)存區(qū)
4.還有指針本身所占據(jù)的內(nèi)存區(qū)
先聲明幾個指針放著做例子:
例一:
(1)int *ptr;
(2)char *ptr;
(3)int **ptr;
(4)int (*ptr)[3];
(5)int *(*ptr)[4];
1.1 指針的類型
從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。所以分析下例一中各個指針的類型:
(1)int *ptr; //指針的類型是int *
(2)char *ptr; //指針的類型是char *
(3)int **ptr; //指針的類型是 int **
(4)int (*ptr)[3]; //指針的類型是 int(*)[3]
(5)int *(*ptr)[4]; //指針的類型是 int *(*)[4]
所以找出指針的類型的方法是不是很簡單?
1.2 指針所指向的類型
當(dāng)你通過指針來訪問指針所指向的內(nèi)存區(qū)時,指針所指向的類型決定了編譯器將把那片內(nèi)存區(qū)里的內(nèi)容當(dāng)做什么來看待。從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符 *去掉,剩下的就是指針所指向的類型。例如:
(1)int *ptr; //指針所指向的類型是int
(2)char *ptr; //指針所指向的的類型是char
(3)int **ptr; //指針所指向的的類型是 int *
(4)int (*ptr)[3]; //指針所指向的的類型是 int()[3]
(5)int *(*ptr)[4]; //指針所指向的的類型是 int *()[4]
在指針的算術(shù)運算中,指針所指向的類型有很大的作用。
指針的類型(即指針本身的類型)和指針所指向的類型是兩個概念。當(dāng)對C越來越熟悉時,你會發(fā)現(xiàn),把與指針攪和在一起的“類型”這個概念分成“指針的 類型”和“指針所指向的類型”兩個概念,是精通指針的關(guān)鍵點之一。有些教材書上寫得很差,就把指針的這兩個概念攪在一起了,所以看起書來前后矛盾,越看越糊涂。
相關(guān)文章
C語言使用DP動態(tài)規(guī)劃思想解最大K乘積與乘積最大問題
Dynamic Programming動態(tài)規(guī)劃方法采用最優(yōu)原則來建立用于計算最優(yōu)解的遞歸式,并且考察每個最優(yōu)決策序列中是否包含一個最優(yōu)子序列,這里我們就來展示C語言使用DP動態(tài)規(guī)劃思想解最大K乘積與乘積最大問題2016-06-06
一文學(xué)會數(shù)據(jù)結(jié)構(gòu)-堆
本文主要介紹了數(shù)據(jù)結(jié)構(gòu)-堆,文中通過圖片和大量的代碼講解的非常詳細,需要學(xué)習(xí)的朋友可以參考下這篇文章,希望可以幫助到你2021-08-08
C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索
這篇文章主要為大家介紹了C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
Qt實現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解
這篇文章主要為大家詳細介紹了Qt實現(xiàn)部件透明陰影效果與不規(guī)則窗體的相關(guān)方法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-01-01

