語言基礎(chǔ)教程電子教案第5章指針_第1頁
語言基礎(chǔ)教程電子教案第5章指針_第2頁
語言基礎(chǔ)教程電子教案第5章指針_第3頁
語言基礎(chǔ)教程電子教案第5章指針_第4頁
語言基礎(chǔ)教程電子教案第5章指針_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章指針指針的基本概念5.1指針運(yùn)算

5.2指針與字符串操作5.35.1指針的基本概念5.1.1指針5.1.2指針的定義與引用1.指針的定義所謂指針變量就是用來存放內(nèi)存地址的變量。

指針變量的定義方式如下:類型*變量名1; /*定義單個(gè)指針變量*/類型*變量名1,*變量名2…; /*定義多個(gè)同類型指針變量*/

綜上所述,指針變量的特點(diǎn)如下。指針是用來存儲(chǔ)對象的內(nèi)存地址的變量,對象可以是簡單類型數(shù)據(jù)(int,char等),也可以是數(shù)組、函數(shù),還可以是另一個(gè)指針。

指針變量的值只能是內(nèi)存中存在的一個(gè)地址,而不是一個(gè)任意的整數(shù)。有關(guān)指針的說明很多是由指針、數(shù)組、函數(shù)說明組合而成的。但并不是可以任意組合,例如數(shù)組不能由函數(shù)組成,即數(shù)組元素不能是一個(gè)函數(shù);函數(shù)也不能返回一個(gè)數(shù)組或返回另一個(gè)函數(shù)。2.指針的引用

對指針變量的引用,由取地址運(yùn)算符“&”和取值運(yùn)算符“*”來完成。取地址運(yùn)算符“&”在前面的學(xué)習(xí)中已經(jīng)見過,例如,在使用scanf()函數(shù)進(jìn)行輸入時(shí),就使用了“&”運(yùn)算符將數(shù)據(jù)存儲(chǔ)到指定的存儲(chǔ)空間。3.空指針NULL

為指針變量賦值時(shí),還可以用其他的指針或使用NULL來進(jìn)行。4.使用指針的注意事項(xiàng)

指針是C語言中具有強(qiáng)大功能的工具,具有極大的靈活性,可以為程序設(shè)計(jì)者帶來方便,但指針同時(shí)也最難掌握,最易出錯(cuò)。如果在程序中指針引用出現(xiàn)錯(cuò)誤,輕則程序不能得到正確結(jié)果,重則程序崩潰,嚴(yán)重者還會(huì)影響其他程序和系統(tǒng)的正常運(yùn)行,因此,在使用指針時(shí)一定要多加注意。5.2指針運(yùn)算5.2.1指針與數(shù)組指針變量除了可以對其引用地址的內(nèi)容進(jìn)行運(yùn)算外,其本身也可進(jìn)行運(yùn)算。指針是內(nèi)存中的一個(gè)地址,對指針本身的運(yùn)算只能是指針在內(nèi)存中位置的改變,即指針可以作加、減運(yùn)算,其結(jié)果是另一個(gè)內(nèi)存地址。

由于指針運(yùn)算的結(jié)果也是一個(gè)內(nèi)存地址,為了使該地址是一個(gè)程序中的合法地址,指針的運(yùn)算通常都是針對數(shù)組而進(jìn)行的。

指針可以用來對數(shù)組進(jìn)行訪問。數(shù)組的指針是指數(shù)組在內(nèi)存中的起始地址,數(shù)組元素的指針是指數(shù)組元素在內(nèi)存中的起始地址。數(shù)組名也可以理解為一個(gè)指針,不過數(shù)組名是一個(gè)指針常量,不能改變??梢杂脭?shù)組名來將數(shù)組的首地址賦給指針。

數(shù)組指針的定義與普通指針的定義方法相同,數(shù)組指針的引用既可以用指針方式來進(jìn)行,也可以用數(shù)組下標(biāo)方式來進(jìn)行,如果指針p是指向數(shù)組a[]首元素的指針,則*(p+n)等價(jià)于a[n],如果指針p是指向數(shù)組元素a[k]的指針,則*(p+n)等價(jià)于a[k+n]。5.2.2指針的運(yùn)算

在指針進(jìn)行運(yùn)算之前,必須先將指針指向一個(gè)數(shù)組,當(dāng)指針指向數(shù)組時(shí),可以進(jìn)行如下的運(yùn)算:指針加上一個(gè)整數(shù),結(jié)果是指向該數(shù)組的另一個(gè)元素的地址;指針減去一個(gè)整數(shù),結(jié)果是指向該數(shù)組的另一個(gè)元素的地址;

指針自增(++),結(jié)果是指針指向該數(shù)組的下一個(gè)元素;指針自減(--),結(jié)果是指針指向該數(shù)組的上一個(gè)元素;

兩個(gè)指針相減(要求兩個(gè)指針都指向同一數(shù)組的元素),結(jié)果為兩個(gè)指針相對移動(dòng)的元素個(gè)數(shù);比較兩個(gè)指針的大?。ㄒ髢蓚€(gè)指針都指向同一數(shù)組的元素),實(shí)質(zhì)上是比較兩個(gè)指針?biāo)笖?shù)組元素下標(biāo)的大小。5.3指針與字符串操作5.3.1字符串指針可以定義一個(gè)字符型指針,使該指針指向字符串起始地址,就可以使用該指針來進(jìn)行字符串的引用了,這個(gè)指針稱為字符串的指針。

定義字符指針的方式如下:char*指針變量名; /*定義時(shí)不初始化*/char*指針變量名=字符串常量; /*定義時(shí)進(jìn)行初始化賦值*/5.3.2字符指針與字符數(shù)組1.字符指針與字符數(shù)組的關(guān)系字符指針也可以用于指向一個(gè)字符數(shù)組的首地址,以此來引用該字符數(shù)組的內(nèi)容。2.字符指針和字符數(shù)組的區(qū)別

字符數(shù)組在定義時(shí),不論是否進(jìn)行初始化,都會(huì)為其分配存儲(chǔ)空間,以存儲(chǔ)數(shù)組的內(nèi)容,它存儲(chǔ)的是字符串本身的內(nèi)容。

字符指針則不同,如果字符指針在字義時(shí)沒有進(jìn)行初始化,則不會(huì)為其分配字符串的存儲(chǔ)空間,而只是分配一個(gè)指針變量的存儲(chǔ)單元,用于存儲(chǔ)指針;如果定義時(shí)進(jìn)行了初始化,則在分配一塊連續(xù)內(nèi)存空間存儲(chǔ)字符串外,還分配一個(gè)存放指針變量的存儲(chǔ)單元,并將字符串存儲(chǔ)空間的起始地址賦給字符指針。

使用指針與數(shù)組進(jìn)行字符串處理時(shí),不同的是,指針可以通過賦值運(yùn)算進(jìn)行改變,而數(shù)組名則不能改變。

字符數(shù)組一旦定義,其使用的存儲(chǔ)空間就是固定的,在任何時(shí)候都可以使用數(shù)組名對數(shù)組進(jìn)行訪問。字符指針變量只是一個(gè)指向內(nèi)存地址的指針,它在程序中改變后將不再指向原來的內(nèi)容。

字符數(shù)組只能在初始化時(shí)進(jìn)行字符串的整體賦值,在程序運(yùn)行中則不能;而字符指針變量既可以在初始化時(shí)進(jìn)行字符串的整體賦值,又可以在程序運(yùn)行中進(jìn)行賦值,因?yàn)檫@個(gè)字符指針只是一個(gè)指針,在程序中是可變的,在程序中賦值后將指向所賦的字符串的內(nèi)存起始地址。

字符數(shù)組名是一個(gè)常量,在程序中只能引用,不能改變;而字符指針是一個(gè)變量,在程序中可以指向任一位置,因此應(yīng)該注意指針的位置,以防止引用出錯(cuò)。還有一點(diǎn)需要注意,通過指向字符串的

溫馨提示

  • 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論