C語(yǔ)言第七章._第1頁(yè)
C語(yǔ)言第七章._第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、第七章地址和指針第7章地址和指針指針是c語(yǔ)言中廣泛使用的一種數(shù)據(jù)類型。如果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí)系統(tǒng)會(huì) 給這個(gè)變量分配內(nèi)存單元,內(nèi)存單元編號(hào)也叫做地址。地址和指針的概念指針變量指向函數(shù)的指針對(duì)指針變量的操作函數(shù)之間地址值的傳遞通過(guò)實(shí)參向函數(shù)傳遞函數(shù)名或指向函數(shù)的指針變量傳給main函數(shù)的參數(shù)7.1地址和指針的概念在計(jì)算機(jī)中,所有的數(shù)拯都是存放在存儲(chǔ)器中的。一般把存 儲(chǔ)器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元,不同的數(shù)據(jù)類型所占 用的內(nèi)存單元數(shù)不等,如整型量占4個(gè)字節(jié)單元,字符型量 占1個(gè)字節(jié)單元等。為了正確地訪問(wèn)這些內(nèi)存單元,必須為 每個(gè)內(nèi)存單元編上號(hào)。根據(jù)一個(gè)內(nèi)存單元的編號(hào)即可準(zhǔn)確

2、地 找到該內(nèi)存單元。既然根據(jù)內(nèi)存單元的編號(hào)或地址就可以找 到所需的內(nèi)存單元,所以通常也把這個(gè)地址稱為指針。內(nèi)存 單元的指針和內(nèi)存單元的內(nèi)容是兩個(gè)不同的概念,下面用一 個(gè)通俗的例子來(lái)說(shuō)明它們之間的關(guān)系。用戶到銀行去存取款 時(shí),銀行工作人員將根據(jù)用戶的賬號(hào)去找存款單,找到之后 在存單上寫入存款、取款的金額。在這里,賬號(hào)就是存單的 指針,存款數(shù)是存單的內(nèi)容。對(duì)于一個(gè)內(nèi)存單元來(lái)說(shuō),單元 的地址即為指針,其中存放的數(shù)據(jù)才是該單元的內(nèi)容。在C語(yǔ)言中,允許用一個(gè)變量來(lái)存放指針,這種變量稱為指針變 量。因此,一個(gè)指針變量的值就是某個(gè)內(nèi)存單元的地址或稱 為某內(nèi)存單元的指針。7.2指針變量7.2.1指針變量的定義

3、也就是說(shuō),若X為一整型變量,則表達(dá)式&X的類型是指向整 數(shù)的指針,而它的值是變量X的地址。同樣,若doubled;則&d的類型是指向雙精度數(shù)d的指針,而&d的值是雙精度變 量d的地址。所以,指針和地址是用來(lái)敘述一個(gè)對(duì)象的兩個(gè) 方面。雖然&x、&d的值分別是整型變星x和雙精度變量d的 地址,但&x、&d的類型是不同的,一個(gè)是指向整型變量x的 指針,而另一個(gè)則是指向雙精度變量d的指針。在習(xí)慣上, 很多情況下指針和地址這兩個(gè)術(shù)語(yǔ)混用了??梢杂孟率龇椒▉?lái)定義一個(gè)指針類型的變量。廉般用“指鬻轟曙斗毀總勰型即雜喘存鶴它隔,int *ip;指針變量的一

4、般定義為類型標(biāo)識(shí)符標(biāo)識(shí)符;其中標(biāo)識(shí)符是指針變量的名字,標(biāo)識(shí)符前加了5 號(hào),表示該變量是指針變量;而“類型標(biāo)識(shí)符” 表示該指針變量所指向的變量的類型。一個(gè)指針變 量只能指向同一種類型的變量,也就是說(shuō),不能定 義一個(gè)指針變量,既能指向一整型變量又能指向雙 精度變量。指針變量在定義中允許帶初始化項(xiàng),例如:int i, *ip=&;這里是用&對(duì)ip初始化,而不是對(duì)*ip初始化。7.2.2指針變量的引用指針變量同普通變量一樣,使用之前不僅要定義說(shuō)明,而 且必須賦予具體的值。未經(jīng)賦值的指針變量不能使用,否 則將造成系統(tǒng)混亂,甚至死機(jī)。指針變量的賦值只能賦予 地址,決不能賦予任何其他數(shù)據(jù),否

5、則將引起錯(cuò)誤。在c語(yǔ)言中,變量的地址是由編譯系統(tǒng)分配的,對(duì)用戶完全透 明,用戶不知道變量的具體地址。兩個(gè)有關(guān)的運(yùn)算符如下。(1)&:取地址運(yùn)算符。(2)*:指針運(yùn)算符(或稱“間接訪問(wèn)”運(yùn)算符)。C語(yǔ)言中提供了地址運(yùn)算符&來(lái)表示變量的地址。其一般形式為&變量名;如&a表示變量a的地址,&b表示變量b的地址。設(shè)有指向整型變量的指針變量 p,如要把整型變量 a 的地址賦了 p 可以有以下 兩種方式。1指針變量初始化的方法。int a;int *p=&a;2賦值語(yǔ)句的方法。int a;int *p;P=&a;不允許把一個(gè)數(shù)賦予指針變量,故下面的賦值是錯(cuò)誤的:int *p;p=1000;被賦值的指針變量前不能再加“杯說(shuō)明符,如寫為*p=&a 也是錯(cuò)誤的。假設(shè):inti=200, x;int *ip;我們定義了兩個(gè)整型變量 i、x,還定義了一個(gè)指向整型數(shù)的指針變量 ip。i、x 中可存放整數(shù),而 ip 中只能存放整型變量的地址。我們可以把 i 的地 址賦給 ip:ip=&i【例71】指針變量的使用。main()int a, b;int *pointer_1, *pointer_2;a=100;b=10;pointe

溫馨提示

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

評(píng)論

0/150

提交評(píng)論