C語言指針學(xué)習(xí)經(jīng)驗(yàn)總結(jié)淺談
這篇C語言指針學(xué)習(xí)經(jīng)驗(yàn)總結(jié)主要是我入職以來學(xué)習(xí)C指針過程中的點(diǎn)滴記錄。文檔里面就不重復(fù)書上說得很清楚的概念性東西,只把一些說得不清楚或理解起來比較費(fèi)解的東西做一下講解,希望能達(dá)到以下三個目的
1.通過寫這些東西,把我腦袋中關(guān)于C的模糊的知識清晰化。
2.給初轉(zhuǎn)C的同事們一點(diǎn)提示和幫助。
3.也希望各位前輩檢查一下文檔中是否有理解偏差的地方。
1 指針的概念分解
指針是一個特殊的變量,它里面存儲的數(shù)值被解釋成為內(nèi)存里的一個地址。 要搞清一個指針需要搞清指針的四方面的內(nèi)容:
1.指針的類型
2.指針?biāo)赶虻念愋?BR>3.指針的值或者叫指針?biāo)赶虻膬?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 指針?biāo)赶虻念愋?BR> 當(dāng)你通過指針來訪問指針?biāo)赶虻膬?nèi)存區(qū)時,指針?biāo)赶虻念愋蜎Q定了編譯器將把那片內(nèi)存區(qū)里的內(nèi)容當(dāng)做什么來看待。從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符 *去掉,剩下的就是指針?biāo)赶虻念愋?。例如?/P>
(1)int *ptr; //指針?biāo)赶虻念愋褪莍nt
(2)char *ptr; //指針?biāo)赶虻牡念愋褪莄har
(3)int **ptr; //指針?biāo)赶虻牡念愋褪?int *
(4)int (*ptr)[3]; //指針?biāo)赶虻牡念愋褪?int()[3]
(5)int *(*ptr)[4]; //指針?biāo)赶虻牡念愋褪?int *()[4]
在指針的算術(shù)運(yùn)算中,指針?biāo)赶虻念愋陀泻艽蟮淖饔谩?/P>
指針的類型(即指針本身的類型)和指針?biāo)赶虻念愋褪莾蓚€概念。當(dāng)對C越來越熟悉時,你會發(fā)現(xiàn),把與指針攪和在一起的“類型”這個概念分成“指針的 類型”和“指針?biāo)赶虻念愋汀眱蓚€概念,是精通指針的關(guān)鍵點(diǎ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)-堆,文中通過圖片和大量的代碼講解的非常詳細(xì),需要學(xué)習(xí)的朋友可以參考下這篇文章,希望可以幫助到你2021-08-08C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實(shí)現(xiàn)高效搜索
這篇文章主要為大家介紹了C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實(shí)現(xiàn)高效搜索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01