版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、讓你不再害怕指針前言:復雜類型說明要了解指針多多少少會出現(xiàn)一些比較復雜的類型,所以我先介紹一下如何完全理解一個復雜類型,要理解復雜類型其實很簡單,一個類型里會出現(xiàn)很多運算符,他們也像普通的表達式一樣,有優(yōu)先級,其優(yōu)先級和運算優(yōu)先級一樣,所以我總結了一下其原則:從變量名處起,根據(jù)運算符優(yōu)先級結合,一步一步分析。下面讓我們先從簡單的類型開始慢慢分析吧:intp這是一個普通的整型變量intp首先從P處開始先與結合所以說明P是一個指針然后再與i
2、nt結合說明指針所指向的內(nèi)容的類型為int型.所以P是一個返回整型數(shù)據(jù)的指針intp[3]首先從P處開始先與[]結合說明P是一個數(shù)組然后與int結合說明數(shù)組里的元素是整型的所以P是一個由整型數(shù)據(jù)組成的數(shù)組intp[3]首先從P處開始先與[]結合因為其優(yōu)先級比高所以P是一個數(shù)組然后再與結合說明數(shù)組里的元素是指針類型然后再與int結合說明指針所指向的內(nèi)容的類型是整型的所以P是一個由返回整型數(shù)據(jù)的指針所組成的數(shù)組int(p)[3]首先從P處開
3、始先與結合說明P是一個指針然后再與[]結合(與“()“這步可以忽略只是為了改變優(yōu)先級)說明指針所指向的內(nèi)容是一個數(shù)組然后再與int結合說明數(shù)組里的元素是整型的.所以P是一個指向由整型數(shù)據(jù)組成的數(shù)組的指針intp首先從P開始先與結合說是P是一個指針然后再與結合說明指針所指向的元素是指針然后再與int結合說明該指針所指向的元素是整型數(shù)據(jù).由于二級指針以及更高級的指針極少用在復雜的類型中所以后面更復雜的類型我們就不考慮多級指針了最多只考慮一級
4、指針.intp(int)從P處起先與()結合說明P是一個函數(shù)然后進入()里分析說明該函數(shù)有一個整型變量的參數(shù)然后再與外面的int結合說明函數(shù)的返回值是一個整型數(shù)據(jù)int(p)(int)從P處開始先與指針結合說明P是一個指針然后與()結合說明指針指向的是一個函數(shù)然后再與()里的int結合說明函數(shù)有一個int型的參數(shù)再與最外層的int結合說明函數(shù)的返回類型是整型所以P是一個指向有一個整型參數(shù)且返回類型為整型的函數(shù)的指針int(p(int))
5、[3]可以先跳過不看這個類型過于復雜從P開始先與()結合說明P是一個函數(shù)然后進入()里面與int結合說明函數(shù)有一個整型變量參數(shù)然后再與外面的結合說明函數(shù)返回的是一個指針然后到最外面一層,先與[]結合說明返回的指針指向的是一個數(shù)組然后再與結合說明數(shù)組里的元素是指針然后再與int結合說明指針指向的內(nèi)容是整型數(shù)據(jù).所以P是一個參數(shù)為一個整數(shù)據(jù)且返回一個指向由整型指針變量組成的數(shù)組的指針變量的函數(shù).說到這里也就差不多了,我們的任務也就這么多,理
6、解了這幾個類型,其它的類型對我們來說也是小菜了,不過我們一般不會用太復雜的類型,那樣會大大減小程序的可讀性,請慎用,這上面的幾種類型已經(jīng)足夠我們用了.1、細說指針指針是一個特殊的變量,它里面存儲的數(shù)值被解釋成為內(nèi)存里的一個地址。要搞清一個指針需要搞清指針的四方面的內(nèi)容:指針的類型、指針所指向的類型、指針的值或者叫指針所指向的內(nèi)存區(qū)、指針本身所占據(jù)的內(nèi)存區(qū)。讓我們分別說明。先聲明幾個指針放著做例子:例一:(1)intptr(2)ptr(3
7、)intptr(4)int(ptr)[3](5)int(ptr)[4]a.指針的類型從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的類型:(1)intptr指針的類型是int(2)ptr指針的類型是(3)intptr指針的類型是intintarray[20]=0intptr=arrayf(i=0iintmain()a[20]=“You_are_a_g
8、irl“p=aptr=printf(“p=%dn“p)printf(“ptr=%dn“ptr)printf(“ptr=%dn“ptr)printf(“ptr=%cn“ptr)ptrprintf(“ptr=%dn“ptr)printf(“ptr=%dn“ptr)printf(“ptr=%cn“ptr)誤區(qū)一、輸出答案為Y和o誤解:ptr是一個的二級指針當執(zhí)行ptr時,會使指針加一個sizeof(),所以輸出如上結果這個可能只是少部分人的結
9、果。誤區(qū)二、輸出答案為Y和a誤解:ptr指向的是一個類型當執(zhí)行ptr時,會使指針加一個sizeof()(有可能會有人認為這個值為1,那就會得到誤區(qū)一的答案這個值應該是4參考前面內(nèi)容)即那進行一次取值運算不就指向數(shù)組中的第五個元素了嗎那輸出的結果不就是數(shù)組中第五個元素了嗎答案是否定的。正解:ptr的類型是指向的類型是一個類型該指向的地址就是p的地址(時會使指針加一個sizeof(),即那(&p4)指向哪呢這個你去問上帝吧,或者他會告訴你在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論