要了解指針,多多少少會(huì)出現(xiàn)一些比較復(fù)雜的類型,所以我先介紹一下如何完全理解一個(gè)復(fù)雜類型,要理解復(fù)雜類型其實(shí)很簡(jiǎn)單,一個(gè)類型里會(huì)出現(xiàn)很多運(yùn)算符,他們也像普通的表達(dá)式一樣,有優(yōu)先級(jí),其優(yōu)先級(jí)和運(yùn)算優(yōu)先級(jí)一樣,所以我總結(jié)了一下其原則:
從變量名處起,根據(jù)運(yùn)算符優(yōu)先級(jí)結(jié)合,一步一步分析.
內(nèi)容:
1、細(xì)說指針
指針是一個(gè)特殊的變量,它里面存儲(chǔ)的數(shù)值被解釋成為內(nèi)存里的一個(gè)地址。要搞清一個(gè)指針需要搞清指針的四方面的內(nèi)容:指針的類型、指針?biāo)赶虻念愋、指針的值或者叫指針(biāo)赶虻膬?nèi)存區(qū)、指針本身所占據(jù)的內(nèi)存區(qū)。讓我們分別說明。
2、指針的算術(shù)運(yùn)算
指針可以加上或減去一個(gè)整數(shù)。指針的這種運(yùn)算的意義和通常的數(shù)值的加減運(yùn)算的意義是不一樣的,以單元為單位。
3、運(yùn)算符&和*
這里&是取地址運(yùn)算符,*是間接運(yùn)算符。
&a的運(yùn)算結(jié)果是一個(gè)指針,指針的類型是 a的類型加個(gè)*,指針?biāo)赶虻念愋褪?a的類型,指針?biāo)赶虻牡刂仿,那就是a 的地址。
*p 的運(yùn)算結(jié)果就五花八門了。總之*p 的結(jié)果是 p 所指向的東西,這個(gè)東西有這些特點(diǎn):它的類型是 p指向的類型,它所占用的地址是 p所指向的地址。
4、指針表達(dá)式
一個(gè)表達(dá)式的結(jié)果如果是一個(gè)指針,那么這個(gè)表達(dá)式就叫指針表式。
5、數(shù)組和指針的關(guān)系
數(shù)組的數(shù)組名其實(shí)可以看作一個(gè)指針。
現(xiàn)在你是否已經(jīng)覺得指針再也不是你所想的那么害怕了,如果你的回答是:對(duì),我不怕了!哈哈,恭喜你,你已經(jīng)掌握 C語言的精華了,C中唯一的難點(diǎn)就是指針,指針搞定其它小菜而已,重要的是實(shí)踐,好吧,讓我們先暫停C 的旅程吧,開始我們的C++編程,C是對(duì)底層操作非常方便的語言,但開發(fā)大型程序本人覺得還是沒有 C++方便,至少維護(hù)方面不太好做。而且C++是面向?qū)ο蟮恼Z言,現(xiàn)在基本已經(jīng)是面向?qū)ο蟮奶煜铝,所以建議學(xué) C++。C++是一門難學(xué)易用的語言,要真正掌握 C++可不是那么容易的,將基本的學(xué)完后,就學(xué)數(shù)據(jù)結(jié)構(gòu)吧,算法才是永恒的,程序設(shè)計(jì)語言層出不窮,永遠(yuǎn)學(xué)不完。學(xué)完之后就認(rèn)真啃下 STL 這根骨頭吧,推薦書籍--------范型編程與 STL 和 STL 源碼剖析。如果你達(dá)到了這樣要求,再一次恭喜你,你已經(jīng)是個(gè)程序高手了,
甚至可以說是個(gè)算法高手,因?yàn)?STL 里有大量的精華而高效的算法。
唉,已經(jīng)該說再見的時(shí)候了,讓我們一起用我們的語言來譜寫我們的人生吧