C語言程序設(shè)計(jì)-指針_第1頁
C語言程序設(shè)計(jì)-指針_第2頁
C語言程序設(shè)計(jì)-指針_第3頁
C語言程序設(shè)計(jì)-指針_第4頁
C語言程序設(shè)計(jì)-指針_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計(jì)指針內(nèi)容摘要指針的概念指針與數(shù)組指針與字符串指針與函數(shù)學(xué)習(xí)目標(biāo)理解指針的基本概念熟練掌握利用指針引用數(shù)組的方法熟練掌握利用指針引用字符串的方法理解指向函數(shù)的指針的使用方法任務(wù)1掌握指針的基本概念

任務(wù)1:任務(wù)引導(dǎo)

變量是內(nèi)存中的存儲單元,對內(nèi)存單元的訪問可以通過對變量的操作來實(shí)現(xiàn),還可以通過對內(nèi)存單元的地址操作來實(shí)現(xiàn)。在程序中,一個(gè)變量實(shí)質(zhì)上是代表了“內(nèi)存中的某個(gè)存儲單元”。那么C程序是怎樣存取這個(gè)存儲單元的內(nèi)容的呢?任務(wù)1:知識點(diǎn)介紹

(1)變量的地址和指針

如圖1所示:系統(tǒng)為c分配1個(gè)字節(jié)的存儲單元,為i分配2個(gè)字節(jié)的存儲單元,為f分配4個(gè)字節(jié)的存儲單元,圖中的數(shù)字只是示意的字節(jié)地址。每個(gè)變量的地址是指該變量所占存儲單元的第一個(gè)字節(jié)的地址。在這里,我們稱c的地址為2001,i的地址為2002,f的地址為2004。圖1變量在內(nèi)存中所占字節(jié)的地址示意圖任務(wù)1:知識點(diǎn)介紹

每個(gè)變量與具體地址的聯(lián)系由C編譯系統(tǒng)來完成。程序中我們對變量進(jìn)行存取操作,實(shí)際上也就是對某個(gè)地址的存儲單元進(jìn)行操作。這種直接按變量的地址存取變量值的方式成為“直接存取”方式。

如圖2(a)所示,假設(shè)我們定義了一個(gè)這樣的變量p,它也有自己的地址(2000),若將變量a的內(nèi)存地址(3000)存放到變量p中,這時(shí)要訪問變量a所代表的存儲單元,可以先找到變量p的地址(2000),從中取出a的地址(3000),然后再去訪問以3000為首地址的存儲單元。這種通過變量p間接得到變量a的地址,然后在存取變量a的值的方式稱為“間接存取”方式。這種用來存放地址的變量稱為“指針變量”,上述變量p就是指針變量。圖2存放地址的指針變量示意圖任務(wù)1:指針操作符

(2)指針操作符

指針操作符有*與&兩個(gè),分別實(shí)現(xiàn)取變量和取地址的操作。程序中就是通過這兩個(gè)操作符實(shí)現(xiàn)指針的定義與訪問的?!?”可以實(shí)現(xiàn)取一個(gè)變量的地址的功能。取出的變量地址可能是一個(gè)很復(fù)雜的數(shù)據(jù)類型,但是操作時(shí)并不關(guān)心數(shù)值的多少,只需要保存到一個(gè)變量上面。“*”實(shí)現(xiàn)取一個(gè)指針?biāo)赶虻淖兞康墓δ?。例如下面的代碼,就是通過一個(gè)變量的指針來訪問變量。任務(wù)2利用指針引用數(shù)組的方法任務(wù)2:任務(wù)引導(dǎo)

指針和數(shù)組有著密切的關(guān)系,任何能由數(shù)組下標(biāo)完成的操作也都可以用指針來實(shí)現(xiàn)。在程序中使用指針變量指向數(shù)組后,就可以通過該指針變量來引用數(shù)組元素,是數(shù)組的處理更加靈活,程序代碼也更緊湊。任務(wù)2:知識點(diǎn)介紹

(1)指針與數(shù)組

數(shù)組與指針的聯(lián)系非常緊密。除了可以用下標(biāo)訪問數(shù)組元素以外,也可以用數(shù)組的指針訪問數(shù)組變量。定義一個(gè)數(shù)組的時(shí)候,就是定義這個(gè)數(shù)組的頭指針,然后分配若干個(gè)存儲單元。定義的數(shù)組名稱是可以直接賦值給一個(gè)指針的,而這個(gè)指針可以指向這個(gè)數(shù)組的第一個(gè)元素。任務(wù)2:知識點(diǎn)介紹

(2)指針與二維數(shù)組

如果數(shù)組的每一個(gè)元素是一個(gè)一維數(shù)組,則這個(gè)數(shù)組就是一個(gè)二維數(shù)組。在二維數(shù)組中,變量可以理解成行和列的關(guān)系。用同樣的方法,可以構(gòu)造出多維數(shù)組。二維數(shù)組可以理解成一個(gè)多行多列的表格,每一個(gè)單元格中存儲了一個(gè)變量??梢酝痪S數(shù)組一樣定義二維數(shù)組。任務(wù)3利用指針引用字符串的方法任務(wù)3:任務(wù)引導(dǎo)

由于字符串是存放在字符數(shù)組中的,因此,為了對字符串操作,可以定義一個(gè)字符數(shù)組,也可以定義一個(gè)字符指針,通過指針的指向來訪問所需的字符。任務(wù)3:知識點(diǎn)介紹(1)字符串指針變量

字符串指針變量的定義說明與指向字符變量的指針變量說明是相同的,只能按對指針變量的賦值不同來區(qū)別。對指向字符變量的指針變量應(yīng)賦予該字符變量的地址。如:charc,*p=&c;表示p是一個(gè)指向字符變量的指針變量,而:char*s=”ZhongZhouUniversity”;則表示s是一個(gè)指向字符串的指針變量,把字符串的首地址賦予s;任務(wù)4向函數(shù)的指針的使用方法任務(wù)4:任務(wù)引導(dǎo)

通過對函數(shù)的學(xué)習(xí)可知,如果不使用全局變量,在一次函數(shù)調(diào)用后最多只能得到一個(gè)返回值(即函數(shù)值),普通的形式參數(shù)是不能帶回結(jié)果的。如果用指針變量作為函數(shù)參數(shù),則可以通過函數(shù)調(diào)用帶回多個(gè)處理結(jié)果。任務(wù)4:知識點(diǎn)介紹

(1)函數(shù)指針變量

在C語言中規(guī)定,一個(gè)函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。可以把函數(shù)的這個(gè)首地址(或稱函數(shù)入口地址)賦予一個(gè)指針變量,使該指針變量指向該函數(shù),然后通過指針變量就可以找到并調(diào)用這個(gè)函數(shù)。我們把這種指向函數(shù)的指針變量稱為“函數(shù)指針變量”。

函數(shù)指針變量定義的一般形式為:

類型說明符(*指針變量名)(形參類型1,形參類型2…);

其中“類型說明符”表示被指向函數(shù)的返回值的類型;“(*指針變量名)”表示“*”后面的變量是定義的指針變量;最后的括號和括號內(nèi)的形參,表示指針變量所指的是一個(gè)函數(shù)。任務(wù)4:知識點(diǎn)介紹

(2)指針型函數(shù)

所謂函數(shù)類型是指函數(shù)返回值的類型。在C語言中允許一個(gè)函數(shù)的返回值是一個(gè)指針(即地址),這種返回指針值的函數(shù)稱為指針型函數(shù)。

定義指針型函數(shù)的一般形式為:

類型說明符*函數(shù)名(形參表)

{

……

/*函數(shù)體*/

}

其中函數(shù)名之前加了“*”號表明這是一個(gè)指針型函數(shù),即返回值是一個(gè)指針。類型說明符表示了返回的指針值所指向的數(shù)據(jù)類型。通過本章對指針的學(xué)習(xí),了解指針的感念和使用方法。在運(yùn)用指針的過程中,應(yīng)注意以下幾點(diǎn):

(1)指針是一個(gè)特殊的變量,它的值是其他變量的地址。

(2)變量使用前必須先聲明,為了區(qū)別指針變量與一般變量,變量名稱前加指針運(yùn)算符“*”。運(yùn)算符“*”稱為“間接引用運(yùn)算符”,它返回指針?biāo)赶虻膶ο蟮闹怠?/p>

(3).用地址運(yùn)算符(&)返回變量的地址。地址運(yùn)算符的操作數(shù)必須是一個(gè)變量,不能把地址運(yùn)算符用于常量、表達(dá)式或用存儲類別register聲明的變量。

(4)指向數(shù)組元素的指針變量和指向普通變量的指針變量二者定義相同,C語言規(guī)定數(shù)組名代表數(shù)組的首地址,即第一個(gè)數(shù)組元素地址。要使指針變量指向數(shù)組a首地址,可執(zhí)行語句“p=&a[0];”或“p=a”。本章小結(jié)本章小結(jié)

(5)對于數(shù)字元素a[i],可以用指針這樣引用:*(a+i),或定義一個(gè)指針變量p,將數(shù)組a的首地址賦給p,即執(zhí)行語句“p=a;”,然后用*(p+i)引用。注意:如果指針變量p指向數(shù)組a首地址,則p++指向數(shù)組a的下一元素地址,即a[1]的地址。

(6)使用指針變量時(shí),通常用以下兩種程序段引用數(shù)組的每個(gè)數(shù)組元素:

(7)C語言中字符串有兩種表示形式:一種是字符數(shù)組,一種是字符指針。

(8)利用指針變量作函數(shù)參

溫馨提示

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

評論

0/150

提交評論