c語言程序設(shè)計(jì)教學(xué)資料第9章指針_第1頁
c語言程序設(shè)計(jì)教學(xué)資料第9章指針_第2頁
c語言程序設(shè)計(jì)教學(xué)資料第9章指針_第3頁
c語言程序設(shè)計(jì)教學(xué)資料第9章指針_第4頁
c語言程序設(shè)計(jì)教學(xué)資料第9章指針_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、變量的內(nèi)存地址變量的內(nèi)存地址指針變量的定義和初始化指針變量的定義和初始化間接尋址運(yùn)算符間接尋址運(yùn)算符函數(shù)指針函數(shù)指針內(nèi)存地址內(nèi)存地址p 指令和數(shù)據(jù)都保存在計(jì)算機(jī)的內(nèi)存中。指令和數(shù)據(jù)都保存在計(jì)算機(jī)的內(nèi)存中。p 內(nèi)存區(qū)的每一個(gè)字節(jié)有唯一的一個(gè)編號,這內(nèi)存區(qū)的每一個(gè)字節(jié)有唯一的一個(gè)編號,這就是就是“地址地址” 。地址是一個(gè)無符號整數(shù),其。地址是一個(gè)無符號整數(shù),其字長一般與主機(jī)相同。字長一般與主機(jī)相同。p 如果在程序中定義了一個(gè)變量,在對程序進(jìn)如果在程序中定義了一個(gè)變量,在對程序進(jìn)行編譯時(shí),系統(tǒng)就會給這個(gè)變量分配內(nèi)存單行編譯時(shí),系統(tǒng)就會給這個(gè)變量分配內(nèi)存單元。元。 只要指明要訪問的內(nèi)存單元的地址,就只

2、要指明要訪問的內(nèi)存單元的地址,就可以立即訪問到該單元??梢粤⒓丛L問到該單元。指針變量的定義指針變量的定義指針概念:指針概念:p存放變量地址需要一種特殊的數(shù)據(jù)類型,即存放變量地址需要一種特殊的數(shù)據(jù)類型,即“指指針針”。p 一個(gè)變量的指針就是該變量的地址(指針就是地址)一個(gè)變量的指針就是該變量的地址(指針就是地址)p 具有指針類型的變量,成為具有指針類型的變量,成為指針變量,指針變量,它是專門用它是專門用于存儲變量地址值的變量。于存儲變量地址值的變量。p 如果有一個(gè)變量專門用來存放另一變量的地址(即如果有一個(gè)變量專門用來存放另一變量的地址(即指針),則它稱為指針),則它稱為“指針變量指針變量”一個(gè)

3、變量的地址稱為該變一個(gè)變量的地址稱為該變量的量的“指針指針”。例如,地址例如,地址2000是變量是變量的指針。的指針。如果有一個(gè)變量專門用來如果有一個(gè)變量專門用來存放另一變量的地址(即存放另一變量的地址(即指針),則它稱為指針),則它稱為“指針指針變量變量”。上述的上述的i_pointer就是一就是一個(gè)指針變量。個(gè)指針變量。變量名變量名變量值變量值變量的變量的地址地址說明:說明:p 定義形式:定義形式:數(shù)據(jù)類型數(shù)據(jù)類型 *指針變量名指針變量名 其中,數(shù)據(jù)類型表示指針變量要指向的變量的數(shù)據(jù)其中,數(shù)據(jù)類型表示指針變量要指向的變量的數(shù)據(jù)類型。類型。(2) 在定義指針變量時(shí)必須指定基類型。在定義指針變

4、量時(shí)必須指定基類型。 例:例:int *p; float a; p=&a; 指針變量的初始化指針變量的初始化(1)(2)注意注意:n 指針變量中只能存放地址(指針),不要將一個(gè)整指針變量中只能存放地址(指針),不要將一個(gè)整數(shù)(或任何其他非地址類型的數(shù)據(jù))賦給一個(gè)指針變數(shù)(或任何其他非地址類型的數(shù)據(jù))賦給一個(gè)指針變量。量。 n 指針只有在真正指向了一塊有意義的內(nèi)存后,才能指針只有在真正指向了一塊有意義的內(nèi)存后,才能訪問它的內(nèi)容。未初始化的指針引起非法訪問內(nèi)存訪問它的內(nèi)容。未初始化的指針引起非法訪問內(nèi)存#include void main ( ) int a=100, b=10; int *pa,

5、 *pb; pa=&a; /把變量把變量a的地址賦給的地址賦給p1 pb =&b; /把變量把變量b的地址賦給的地址賦給p2 printf(%d,%d,);); printf(%d,%d,*pa, *pb););papb10010尋址方式尋址方式任何變量在存在期間總有確定存儲位置,有固任何變量在存在期間總有確定存儲位置,有固定的地址定的地址p 如何讀寫內(nèi)存中的數(shù)據(jù)?如何讀寫內(nèi)存中的數(shù)據(jù)? 通過變量的地址訪問變量所在的存儲單元。通過變量的地址訪問變量所在的存儲單元。p 兩種尋址方式兩種尋址方式 直接尋址直接尋址 間接尋址間接尋址 直接尋址直接尋址p 按變量名或地址存取變量值的方式稱為按變量名或地

6、址存取變量值的方式稱為“直直接訪接訪 問問”方式方式p &取地址運(yùn)算符取地址運(yùn)算符p%p格式字符,表示輸出變量的地址值格式字符,表示輸出變量的地址值間接尋址間接尋址p 通過指針變量間接存取它所指向的變量的訪通過指針變量間接存取它所指向的變量的訪問方式稱為問方式稱為“間接訪問間接訪問”方式方式l“”和和“*”兩個(gè)運(yùn)算符的優(yōu)先級別相同,但按自右而左方向兩個(gè)運(yùn)算符的優(yōu)先級別相同,但按自右而左方向結(jié)合。結(jié)合。p 取地址運(yùn)算符取地址運(yùn)算符&使用在變量名前取變量地址,是對應(yīng)類型的指針值,可賦值使用在變量名前取變量地址,是對應(yīng)類型的指針值,可賦值給類型合適的指針。給類型合適的指針。例:例:int a=5,

7、*p; p=&a;我是真的,我是真的,猜對了嗎猜對了嗎p 間接運(yùn)算符間接運(yùn)算符*用來取指針指向地址的內(nèi)容用來取指針指向地址的內(nèi)容*p=x=5“”和和“*”兩個(gè)運(yùn)算符的優(yōu)先級別相同,但按自右而左方向結(jié)兩個(gè)運(yùn)算符的優(yōu)先級別相同,但按自右而左方向結(jié)合。合。指針運(yùn)算指針運(yùn)算abcd253p33指針與函數(shù)指針與函數(shù)按值調(diào)用:按值調(diào)用:p 指針變量作函數(shù)參數(shù)指針變量作函數(shù)參數(shù) 按地址調(diào)用(模擬按引用調(diào)用)按地址調(diào)用(模擬按引用調(diào)用)函數(shù)指針函數(shù)指針p 如果在程序中定義了一個(gè)函數(shù),在編譯時(shí),編譯如果在程序中定義了一個(gè)函數(shù),在編譯時(shí),編譯系統(tǒng)為函數(shù)代碼分配一段存儲空間,這段存儲空間系統(tǒng)為函數(shù)代碼分配一段存儲空

8、間,這段存儲空間的起始地址,稱為這個(gè)的起始地址,稱為這個(gè)函數(shù)的指針函數(shù)的指針。p 可以定義一個(gè)指向函數(shù)的指針變量,用來存放某可以定義一個(gè)指向函數(shù)的指針變量,用來存放某一函數(shù)的起始地址,這就意味著此指針變量指向該一函數(shù)的起始地址,這就意味著此指針變量指向該函數(shù)。函數(shù)。 注意:注意:int (*add)(int, int);與與int *add(int, int);是不同是不同的的后者函數(shù)有兩個(gè)整型形參,而函數(shù)的返回值時(shí)一個(gè)后者函數(shù)有兩個(gè)整型形參,而函數(shù)的返回值時(shí)一個(gè)指針類型的數(shù)據(jù)。指針類型的數(shù)據(jù)。函數(shù)返回指針函數(shù)返回指針有關(guān)指針的小結(jié)有關(guān)指針的小結(jié) 1.首先要準(zhǔn)確地弄清楚指針的含義。指針就是地址,凡是出現(xiàn)“指針”的地方,都可以用“地址”代替,例如,變量的指針就是變量的地址,指針變量就是地址變量 要區(qū)別指針和指針變量。指針就是地址

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論