找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7309|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

讓你不再害怕指針(關(guān)于C語言指針的超詳細(xì)解說 共29頁pdf下載)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:269636 發(fā)表于 2018-3-17 19:20 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
讓你不再害怕指針
前言:復(fù)雜類型說明
要了解指針,多多少少會出現(xiàn)一些比較復(fù)雜的類型,所以我先介紹一下如何完全理解一個復(fù)雜類型,要理解復(fù)雜類型其實很簡單,一個類型里會出現(xiàn)很多運算符,他們也像普通的表達(dá)式一樣,有優(yōu)先級,其優(yōu)先級和運算優(yōu)先級一樣,所以我總結(jié)了一下其原則:
從變量名處起,根據(jù)運算符優(yōu)先級結(jié)合,一步一步分析.
下面讓我們先從簡單的類型開始慢慢分析吧:

//比*高,所以 P是一個數(shù)組,然后再與*結(jié)合,說明
//數(shù)組里的元素是指針類型,然后再與 int結(jié)合,
//說明指針?biāo)赶虻膬?nèi)容的類型是整型的,所以
//P 是一個由返回整型數(shù)據(jù)的指針?biāo)M成的數(shù)組

int (*p)[3];
//首先從 P處開始,先與*結(jié)合,說明 P是一個指針
//然后再與[]結(jié)合(與"()"這步可以忽略,只是為
//了改變優(yōu)先級),說明指針?biāo)赶虻膬?nèi)容是一個
//數(shù)組,然后再與 int 結(jié)合,說明數(shù)組里的元素是
//整型的.所以 P 是一個指向由整型數(shù)據(jù)組成的數(shù)
//組的指針


//的指針變量的函數(shù).
說到這里也就差不多了,我們的任務(wù)也就這么多,理解了這幾個類型,其它的類型對我們來說也是小菜了,不過我們一般不會用太復(fù)雜的類型,那樣會大大減小程序的可讀性,請慎用,這上面的幾種類型已經(jīng)足夠我們用了.

1、細(xì)說指針
指針是一個特殊的變量,它里面存儲的數(shù)值被解釋成為內(nèi)存里的一個地址。要搞清一個指針需要搞清指針的四方面的內(nèi)容:指針的類型、指針?biāo)赶虻念愋汀⒅羔樀闹祷蛘呓兄羔標(biāo)赶虻膬?nèi)存區(qū)、指針本身所占據(jù)的內(nèi)存區(qū)。讓
我們分別說明。
先聲明幾個指針放著做例子:

(5)int*(*ptr)[4];//指針的類型是 int*(*)[4]
怎么樣?找出指針的類型的方法是不是很簡單?

2.指針?biāo)赶虻念愋?/font>
當(dāng)你通過指針來訪問指針?biāo)赶虻膬?nèi)存區(qū)時,指針?biāo)赶虻念愋蜎Q定了編譯器將把那片內(nèi)存區(qū)里的內(nèi)容當(dāng)做什么來看待。
從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針?biāo)赶虻念愋汀?/font>例如:
(1)int*ptr; //指針?biāo)赶虻念愋褪莍nt
(2)char*ptr; //指針?biāo)赶虻牡念愋褪莄har
(3)int**ptr; //指針?biāo)赶虻牡念愋褪莍nt*
(4)int(*ptr)[3]; //指針?biāo)赶虻牡念愋褪莍nt()[3]
(5)int*(*ptr)[4]; //指針?biāo)赶虻牡念愋褪莍nt*()[4]
在指針的算術(shù)運算中,指針?biāo)赶虻念愋陀泻艽蟮淖饔谩?br /> 指針的類型(即指針本身的類型)和指針?biāo)赶虻念愋褪莾蓚概念。當(dāng)你對 C 越來越熟悉時,你會發(fā)現(xiàn),把與指針攪和在一起的"類型"這個概念分成"指針的類型"和"指針?biāo)赶虻念愋?quot;兩個概念,是精通指針的關(guān)鍵點之一。
我看了不少書,發(fā)現(xiàn)有些寫得差的書中,就把指針的這兩個概念攪在一起了,所以看起書來前后矛盾,越看越糊涂。

3.指針的值----或者叫指針?biāo)赶虻膬?nèi)存區(qū)或地址
指針的值是指針本身存儲的數(shù)值,這個值將被編譯器當(dāng)作一個地址,而不是一個一般的數(shù)值。在32 位程序里,所有類型的指針的值都是一個 32位


…………………………
…………此處省略若干字………………
…………………………

10、結(jié)束語
現(xiàn)在你是否已經(jīng)覺得指針再也不是你所想的那么害怕了,如果你的回答是:對,我不怕了!哈哈,恭喜你,你已經(jīng)掌握 C語言的精華了,C中唯一的難點就是指針,指針搞定其它小菜而已,重要的是實踐,好吧,讓我們先暫停C 的旅程吧,開始我們的C++編程,C是對底層操作非常方便的語言,但開發(fā)大型程序本人覺得還是沒有 C++方便,至少維護(hù)方面不太好做。而且C++是面向?qū)ο蟮恼Z言,現(xiàn)在基本已經(jīng)是面向?qū)ο蟮奶煜铝,所以建議學(xué) C++。C++是一門難學(xué)易用的語言,要真正掌握 C++可不是那么容易的,將基本的學(xué)完后,就學(xué)數(shù)據(jù)結(jié)構(gòu)吧,算法才是永恒的,程序設(shè)計語言層出不窮,永遠(yuǎn)學(xué)不完。學(xué)完之后就認(rèn)真啃下 STL 這根骨頭吧,推薦書籍--------范型編程與 STL 和 STL 源碼剖析。如果你達(dá)到了這樣要求,再一次恭喜你,你已經(jīng)是個程序高手了,甚至可以說是個算法高手,因為 STL 里有大量的精華而高效的算法。唉,已經(jīng)該說再見的時候了,讓我們一起用我們的語言來譜寫我們的人生吧,最后笑個,哈哈,睡覺了。好累,都 2:00了

完整的pdf格式文檔51黑下載地址(共29頁):
讓你不再害怕指針.PDF (214.83 KB, 下載次數(shù): 297)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏24 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:88606 發(fā)表于 2018-3-20 11:53 | 只看該作者
辛苦了樓主,打字確實辛苦!
回復(fù)

使用道具 舉報

板凳
ID:372426 發(fā)表于 2018-12-30 11:34 | 只看該作者
好書,謝謝
回復(fù)

使用道具 舉報

地板
ID:5203 發(fā)表于 2018-12-30 15:10 | 只看該作者
樓主辛苦了,謝謝!
回復(fù)

使用道具 舉報

5#
ID:18591 發(fā)表于 2019-2-4 15:06 | 只看該作者
感謝分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回復(fù)

使用道具 舉報

6#
ID:276761 發(fā)表于 2019-2-4 19:17 | 只看該作者

樓主辛苦了,謝謝!
回復(fù)

使用道具 舉報

7#
ID:596434 發(fā)表于 2023-6-1 12:55 | 只看該作者
非常好的文章,感謝樓主分享
回復(fù)

使用道具 舉報

8#
ID:712493 發(fā)表于 2023-6-3 09:01 | 只看該作者
辛苦了樓主,打字確實辛苦!  這個必須頂一下,太難了
回復(fù)

使用道具 舉報

9#
ID:86450 發(fā)表于 2023-6-3 11:09 | 只看該作者
比如 這句  (5)int*(*ptr)[4]; //指針?biāo)赶虻牡念愋褪莍nt*()[4]
在做什么項目上,會用到呢?
回復(fù)

使用道具 舉報

10#
ID:88756 發(fā)表于 2023-6-28 10:39 | 只看該作者

辛苦了樓主,謝謝
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表