7.1地址與指針、指針變量_第1頁(yè)
7.1地址與指針、指針變量_第2頁(yè)
7.1地址與指針、指針變量_第3頁(yè)
7.1地址與指針、指針變量_第4頁(yè)
7.1地址與指針、指針變量_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、CONTENTS 目 錄提出問(wèn)題 引入新課自主學(xué)習(xí) 明確考點(diǎn)案例分析 交流提升仿真演練 體驗(yàn)探索提出問(wèn)題 引入新課PART 011、如何訪問(wèn)變量的值? 2、變量名、變量地址、變量的值三者在描述變量上有什么區(qū)別?3、內(nèi)存單元的分配原則常根據(jù)什么進(jìn)行分配的?提出問(wèn)題 引入新課想一想自主學(xué)習(xí) 明確考點(diǎn)PART 021、地址的定義:存儲(chǔ)單元的編號(hào),內(nèi)存中的每一個(gè)字節(jié)都有一個(gè)編號(hào),這個(gè)編號(hào)被稱為“地址”, 也就是該存儲(chǔ)單元地址。存儲(chǔ)單元:存放數(shù)據(jù)的存儲(chǔ)器。存儲(chǔ)單元的內(nèi)容:變量的值。存儲(chǔ)單元的分配:對(duì)程序中定義的變量,編譯程序會(huì)根據(jù)變量的數(shù)據(jù)類型為它們分配合適的內(nèi)存單元,這樣每個(gè)變量在內(nèi)存中都會(huì)有相對(duì)固定

2、的位置??键c(diǎn)一:地址、指針、指針變量的基本概念例如:int a =1, b=2;float f1=1.1,f2=5.9 ;double d=13.24;char c1= A, c2= B;編號(hào)內(nèi)容變量名2、指針的定義:變量的地址稱為變量的指針。指針就是地址,是記錄變量存儲(chǔ)單元位置或者說(shuō)是反映變量地址的正整數(shù)。指針是一個(gè)大小固定為2個(gè)字節(jié)的變量,不管什么類型都是用于存放一個(gè)地址的信息。在上例中,假設(shè)變量a的指針是3000,則變量b的指針是3002,變量f1的指針是3004。考點(diǎn)一:地址、指針、指針變量的基本概念3、變量的訪問(wèn)形式:“直接訪問(wèn)”是通過(guò)變量名或地址訪問(wèn)變量值的方式,即直接通過(guò)變量的指

3、針(地址)找到變量的存儲(chǔ)單元,從而對(duì)其中的值進(jìn)行存取?!伴g接訪問(wèn)”是指將變量i的地址事先存放在另一個(gè)變量中,然后通過(guò)該變量來(lái)找到變量i的地址,再進(jìn)行訪問(wèn)i變量的過(guò)程稱為。4、指針變量是指專門(mén)存放指針的變量,即專門(mén)存放變量地址的變量被稱為“指針變量”。指針變量雖然屬于變量的范疇,但不同于其他類型的變量。注:使用指針變量的目的并非針對(duì)存于其中的指針進(jìn)行操作,而是為了通過(guò)這個(gè)指針對(duì)其指向的變量進(jìn)行操作,通常把這種訪問(wèn)也稱為“間接訪問(wèn)”,如圖示??键c(diǎn)一:地址、指針、指針變量的基本概念所謂“指向”是通過(guò)地址來(lái)體現(xiàn)的。如果一個(gè)指針變量p包含另一個(gè)變量n的地址,那么,我們就稱p“指向”n。指針指針變量變量n

4、的值的值指針變量p變量n變量n的地址1、指針變量的定義格式: *;注意:該“*”號(hào)只是一個(gè)類型標(biāo)識(shí)符,不是運(yùn)算符,不要與后面的指針運(yùn)算符混淆。 例: int *p1, *p2; 說(shuō)明:1)指針變量的類型是定義時(shí)所規(guī)定指向變量的基類型,如p1、p2只能指向整型變量,不能指向?qū)嵭秃妥址妥兞俊?) 指針變量的值表示的是它所指向變量的地址。若一個(gè)指針變量為0 (NULL),表示該指針為空,說(shuō)明它沒(méi)有指向任何變量(存儲(chǔ)單元)。考點(diǎn)二:指針變量的使用考點(diǎn)二:指針變量的使用2、指針變量的賦值取地址運(yùn)算符&將指針變量指向某個(gè)變量的賦值格式: = & ;說(shuō)明:&為一元運(yùn)算符,只作用于一

5、個(gè)操作數(shù),它返回操作數(shù)的地址。int *p , n=10 ;p=&n;表示把變量n的地址存入指針變量p,使p指向n。這里所說(shuō)的地址是變量在內(nèi)存中的位置,與變量的內(nèi)容無(wú)關(guān)。&的作用是“取地址”, p=&n;的意義是“p接受n的地址”。假設(shè)變量n的值存放在內(nèi)存位置6000處,賦值后p的地址值就是6000??键c(diǎn)二:指針變量的使用3、指針變量的引用指針運(yùn)算符*作用:取指針?biāo)赶虻拇鎯?chǔ)單元中的內(nèi)容, *是&的補(bǔ)操作,它也是一元運(yùn)算符,返回其操作數(shù)所指變量的值,即取指針?biāo)赶蜃兞康闹怠?例: int i=100, *p1; p1=&i; printf(“%dn”,

6、*p1);語(yǔ)句實(shí)質(zhì)是*p1=&i;則p1的輸出值就是100。4、*和&運(yùn)算符*和&都一元運(yùn)算符,具有互補(bǔ)操作。*和&這兩個(gè)運(yùn)算符都是單目運(yùn)算符,優(yōu)先級(jí)相同,均按從右至左的方向結(jié)合。如:int a,*;p=&a; 兩種組合運(yùn)算形式:若有&*p;則它的含意是先進(jìn)行*p的運(yùn)算,就是變量a,再執(zhí)行&運(yùn)算。因此,&*p與&a相同。若有*&p;語(yǔ)句,則先進(jìn)行&a運(yùn)算,得到a的地址,再進(jìn)行*運(yùn)算。即&a所指向的變量??键c(diǎn)三:二維數(shù)組元素的使用說(shuō)明:說(shuō)明:(1)指針變量中只能存放地址指針變量中只能存放地址(指針),

7、將一個(gè)整型變量(或任其他非地址類型的數(shù)據(jù))賦給一個(gè)指針變量是不允許的。如: int *p;p=300;(2)不同類型的指針不能互相賦值不同類型的指針不能互相賦值。例如,下列用法是錯(cuò)誤的,因?yàn)閙和p指向的數(shù)據(jù)類型不匹配 float m; int *p=&m,*q;(3)不能用尚未定義的變量給指針變量賦初值。例如,下列用法是錯(cuò)誤的:float *p=&r; float r;(4)使用賦值語(yǔ)句賦值在程序執(zhí)行中,可以使用賦值語(yǔ)句為指針變量賦值。一般格式如下:指針變量=地址;例如:int m=196,*p,*q;p=&m; /* 將變量m的地址賦給指針變量p */q=p; /*

8、利用指針變量p為指針變量q賦值 */案例分析 交流提升PART 03【例1】從鍵盤(pán)輸入兩個(gè)整數(shù),按由大到小的順序輸出。#include void main() int *p1, *p2, a, b, t; /*定義整型指針變量與整型變量*/ scanf(%d%d, &a, &b); p1=&a; /*使指針變量p1指向整型變量a*/ p2=&b; /*使指針變量p2指向整型變量b*/ if(*p1 *p2) /*交換指針變量所指向的變量*/ t=*p1;*p1=*p2;*p2=t; printf(%d, %dn, a, b);【解析】在該程序中,當(dāng)執(zhí)行賦值操作p

9、1 = &a和p2 = &b后,指針變量p1與p2分別指向了變量a與b。當(dāng)引用指針變量*p1與*p2時(shí),實(shí)際上就是表示取變量a與b的值。上例也可用下述方法進(jìn)行:#include void main() int *p1, *p2, a, b, *t; scanf(%d%d, &a, &b); p1 = &a; p2 = &b; if(*p1*p2) /*交換指針變量的指向*/ t = p1; p1 = p2;p2 = t; printf(%d, %dn, *p1, *p2);仿真演練,體驗(yàn)探索PART 041、設(shè)有定義:int n1=0,n2,*p

10、=&n2,*q=&n1;以下賦值語(yǔ)句中與n2=n1;語(yǔ)句等價(jià)的是( ) A)*p=*q;B)p=q;C)*p=&n1; D)p=*q;2、若有定義:int x=0, *p=&x;,則語(yǔ)句printf(%dn,*p);的輸出結(jié)果是( ) A)隨機(jī)值B)0 C)x的地址 D)p的地址3、有以下程序運(yùn)行后的輸出結(jié)果是( ) main() int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=p;p=q;q=r; printf(%d,%d,%d,%dn,*p,*q,a,b); A)8,7,8,7 B)7,8,7,8 C)8,7,7,8 D)7,8,8,7 思考:如果將r=p; p=q;q=r;換成*r=*p; *p=*q; *q=*r;時(shí)結(jié)果又是什么?4、已有定義:int i,a10,*p;,則合法的賦值語(yǔ)句是( ) A)p=100;B)p=a5;C)p=a2+2; D)p=a+2;5、有以下程序運(yùn)行后的輸出結(jié)果是( )main() char str10=China,Beijing,

溫馨提示

  • 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)論