全國計算機等級考試實用應(yīng)試教程二級C語言_第8章__指針.ppt_第1頁
全國計算機等級考試實用應(yīng)試教程二級C語言_第8章__指針.ppt_第2頁
全國計算機等級考試實用應(yīng)試教程二級C語言_第8章__指針.ppt_第3頁
全國計算機等級考試實用應(yīng)試教程二級C語言_第8章__指針.ppt_第4頁
全國計算機等級考試實用應(yīng)試教程二級C語言_第8章__指針.ppt_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、本章要點: 8.1 變量的地址和指針 8.2 指針變量的定義和指針變量的基類型 8.3 給指針變量賦值 8.4 對指針變量的操作 8.5 函數(shù)之間地址值的傳遞,第8章 指針,8.1 變量的地址和指針 1變量及其地址 在C的程序中要定義許多變量,用來保存程序中用到的數(shù)據(jù),包括輸入的原始數(shù)據(jù)、加工的中間結(jié)果及最終數(shù)據(jù)。C編譯系統(tǒng)會根據(jù)定義中變量的類型,為其分配一定字節(jié)數(shù)的內(nèi)存空間(如字符型占1個字節(jié),整型占2字節(jié),實型占4字節(jié),雙精度型占8字節(jié)等),此后這個變量的地址也就確定了。,例如有變量定義語句:char a, int b, float c; 編譯系統(tǒng)給變量分配的存儲空間如圖8-1所示。 圖8

2、.1 變量分配的存儲單元與地址 C語言規(guī)定,當(dāng)一個變量占用一個字節(jié)時,該字節(jié)的地址就是該變量的地址,如果變量占用連續(xù)的多個字節(jié),那么第一個字節(jié)的地址就是該變量的地址。,變量的地址起到了尋找變量的作用,好象是一個指針指向了變量,所以常把變量的地址稱為“指針”。 2指針變量 若一個變量專用于存放另一個變量的地址(指針),則該變量稱為指針變量。,指針的對象:當(dāng)把變量的地址存入指針變量后, 我們就可以說這個指針指向了該變量。 變量的存取方法:直接存取和間接存取。,在C程序中,變量的地址可以通過運算符“ 使指針變量p中也存放了變量k的地址,也就是說指針變量p和q都指向了變量k。 注意:在賦值號兩邊指針變

3、量的基類型必須相同。 (3)通過標(biāo)準(zhǔn)函數(shù)獲得地址值 可以通過調(diào)用庫函數(shù)malloc和calloc在內(nèi)存中開辟動態(tài)存儲單元,并把所開辟的動態(tài)存儲單元的地址賦給指針變量。,8.3.2 給指針變量賦“空”值 除了給指針變量賦地址值外,還可以給指針變量賦NULL值。 例如:p=NULL; NULL是在stdio.h頭文件中的預(yù)定義符。NULL的代碼值為0,當(dāng)p=NULL時,稱p為空指針。因為NULL的代碼值是0,所以上面語句等價于: p=0; 或 p=0; 這時,指針p并不是指向地址為0的存儲單元,而是具有一個確定的值“空”。企圖通過一個空指針去訪問一個存儲單元時,將會得到一個出錯信息。,8.4 對指

4、針變量的操作 8.4.1 通過指針來引用一個存儲單元 1取地址運算符(”返回的是數(shù)組元素a5的地址。 (2)*運算符。為指針運算符,其作用是返回以操作對象的值作為地址的變量(或內(nèi)存單元)的內(nèi)容。,它們都是單目運算符,優(yōu)先級高于所有的雙目運算符,它們的結(jié)合性均是自右向左。在使用這兩個運算符需要注意以下幾點: (1)如果已經(jīng)執(zhí)行了“p= p=,間接訪問運算符必須出現(xiàn)在運算對象的左邊,其運算對象是地址或者是存放地址的指針變量。即*號右邊也可以是地址值,如 q=*(,8.4.2 移動指針 移動指針就是指對指針變量進行加上或減去一個整數(shù)、或通過賦值運算,使指針變量指向相鄰的存儲單元。因此,只有當(dāng)指針指向

5、一串連續(xù)的存儲單元時,指針的移動才有意義。 當(dāng)指針指向一串連續(xù)的存儲單元時,還可以和指向同一串連續(xù)存儲單元的指針進行相減的運算,除此之外,不可以對指針進行任何其他的算術(shù)運算。,8.4.3 指針比較 在關(guān)系表達式中,可以對兩個指針進行比較,即兩個變量地址的比較。如: p,q是兩個指針變量,if(pq) printf(“p points to lower than q.n”); 通常,兩個或兩個以上的指針指向同一目標(biāo)時比較才有意義。,8.5 函數(shù)之間地址值的傳遞 8.5.1 形參為指針變量時,實參和形參之間的數(shù)據(jù)傳遞 指針可以作為參數(shù)在主調(diào)函數(shù)和被調(diào)函數(shù)之間傳遞數(shù)據(jù) 8.5.2 通過傳送地址值,在被調(diào)用函數(shù)中直接改變調(diào)用函數(shù)中的變量的值,8.5.3 函數(shù)返回地址值 函數(shù)值的類型不僅可以是簡單的數(shù)據(jù)類型,而且還可以是指針類型。其一般形式為: 類型名 *函數(shù)名(形式參數(shù)說明列表) 以下是幾點說明: (1)存儲類型有兩種,static和extern,默認(rèn)為extern. (2)“*函數(shù)名”不能寫成“(*函數(shù)名)”,否則就成了指向函數(shù)的指針。 (3)此類函數(shù)的調(diào)用形式通常是:p=函數(shù)名(實際參數(shù)列表),其中p通常是調(diào)用函數(shù)中定義的一個指針變量。,例:以下函數(shù)把兩個整數(shù)形參中較大的那個數(shù)的地址作為函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論