第14次課 第3 章數(shù)據(jù)類(lèi)型 指針與引用_第1頁(yè)
第14次課 第3 章數(shù)據(jù)類(lèi)型 指針與引用_第2頁(yè)
第14次課 第3 章數(shù)據(jù)類(lèi)型 指針與引用_第3頁(yè)
第14次課 第3 章數(shù)據(jù)類(lèi)型 指針與引用_第4頁(yè)
第14次課 第3 章數(shù)據(jù)類(lèi)型 指針與引用_第5頁(yè)
已閱讀5頁(yè),還剩6頁(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、重慶郵電大學(xué)教案【面向過(guò)程程序設(shè)計(jì)】周次第12周 第 14次課章節(jié)名稱第3 章數(shù)據(jù)類(lèi)型指針與引用授課方式理論課( 實(shí)驗(yàn)課( 集中上機(jī)( 教學(xué)時(shí)數(shù)2學(xué)時(shí)教學(xué)目的及要求理解內(nèi)存地址的概念;理解指針的概念;掌握指針訪問(wèn)數(shù)組元素方法;掌握引用的概念及使用方式;教 學(xué) 內(nèi) 容 提 要時(shí)間分配(分鐘)內(nèi)存地址解釋?zhuān)簝?nèi)存比如成居民居住的房屋,假設(shè)房屋都是方格子大小,每個(gè)房屋都有門(mén)牌號(hào),內(nèi)存地址就是這個(gè)門(mén)牌號(hào),知道這個(gè)門(mén)牌號(hào)就可以把信件郵寄到這個(gè)居民。內(nèi)存空間的訪問(wèn)方式: 通過(guò)變量名訪問(wèn):變量名就代表著某一內(nèi)存空間,通過(guò)這個(gè)變量名直接存取內(nèi)存空間的值。例:int a;a=3;cout 通過(guò)地址訪問(wèn):得到內(nèi)存空

2、間地址,直接通過(guò)地址對(duì)內(nèi)存空間進(jìn)行存取。如何得到地址?地址運(yùn)算符:&例:int var;則&var 表示變量var在內(nèi)存中的起始地址指針變量的概念:概念 指針:內(nèi)存地址,用于間接訪問(wèn)內(nèi)存單元 指針變量:用于存放地址的變量指針變量聲明 例: int i; int *i_pointer=&i;i_pointer指向整型變量的指針引用數(shù)據(jù): 例1:i=3; 例2:*i_pointer=3;指針變量的初始化:語(yǔ)法形式 數(shù)據(jù)類(lèi)型 *指針名初始地址;例:int a;int *pa=&a;int *qa=pa;注意事項(xiàng)用變量地址作為初值時(shí),該變量必須在指針初始化之前已說(shuō)明過(guò),且變量類(lèi)型應(yīng)與指針類(lèi)型一致??梢?/p>

3、用一個(gè)已賦初值的指針去初始化另一 個(gè)指針變量。指針變量的賦值運(yùn)算:指針名=地址“地址”中存放的數(shù)據(jù)類(lèi)型與指針類(lèi)型必須相符。向指針變量賦的值必須是地址常量或變量,不能是普通整數(shù)。但可以賦值為整數(shù)0,表示空指針。指針的類(lèi)型是它所指向變量的類(lèi)型,而不是指針本身數(shù)據(jù)值的類(lèi)型,任何一個(gè)指針本身的數(shù)據(jù)值都是unsigned long int型。允許聲明指向 void 類(lèi)型的指針。該指針可以被賦予任何類(lèi)型對(duì)象的地址。例: void *general; 指針的聲明、賦值與使用:#include using namespace std; void main(int *i_pointer; /聲明int型指針i_

4、pointer int i; /聲明int型數(shù)i i_pointer=&i; /取i的地址賦給i_pointer i=10; /int型數(shù)賦初值 coutOutput int i= 輸出 int 型數(shù)的值 coutOutput int pointer i=*i_pointer 輸出 int 型指針?biāo)傅刂返膬?nèi)容 void類(lèi)型指針的使用:void vobject; /錯(cuò),不能聲明void類(lèi)型的變量void *pv; /對(duì),可以聲明void類(lèi)型的指針int *pint; int i;int main( pv = &i; /void類(lèi)型指針指向整型變量 /void指針賦值給int指針需要類(lèi)型強(qiáng)制轉(zhuǎn)換

5、: pint = (int *pv; 指向常量的指針:不能通過(guò)指針來(lái)改變所指對(duì)象的值,但指針本身可以改變,可以指向另外的對(duì)象。例1char *name1=John; /name1是一般指針*name1=A; /編譯正確,運(yùn)行出錯(cuò)例2const char *name1=John; /指向常量的指針char s=abc;name1=s; /正確,name1本身的值可以改變*name1=1; /編譯時(shí)指出錯(cuò)誤指針類(lèi)型的常量:若聲明指針常量,則指針本身的值不能被改變。例:char *const name2=John; name2=abc;/錯(cuò)誤,指針常量值不能改變#include using name

6、space std;/-void main(int a = 78, c = 18;const int* ip = &a;const int* const icp = &c;a = 60; c = 28;cout*ip cout*icp /=指針變量的算術(shù)運(yùn)算:指針與整數(shù)的加減運(yùn)算指針p加上或減去n,其意義是指針當(dāng)前指向位置的前方或后方第n個(gè)數(shù)據(jù)的地址。這種運(yùn)算的結(jié)果值取決于指針指向的數(shù)據(jù)類(lèi)型。指針加一,減一運(yùn)算指向下一個(gè)或前一個(gè)數(shù)據(jù)。例如:y=(*px+ 相當(dāng)于 y=*(px+ (*和+優(yōu)先級(jí)相同,自右向左運(yùn)算 指針變量的關(guān)系運(yùn)算:關(guān)系運(yùn)算指向相同類(lèi)型數(shù)據(jù)的指針之間可以進(jìn)行各種關(guān)系運(yùn)算。指向不

7、同數(shù)據(jù)類(lèi)型的指針,以及指針與一般整數(shù)變量之間的關(guān)系運(yùn)算是無(wú)意義的。指針可以和零之間進(jìn)行等于或不等于的關(guān)系運(yùn)算。例如:p=0或p!=0賦值運(yùn)算向指針變量賦的值必須是地址常量或變量,不能是普通整數(shù)。但可以賦值為整數(shù)0,表示空指針。指向數(shù)組元素的指針:聲明與賦值例:int a10, *pa; pa=&a0; 或 pa=a;通過(guò)指針引用數(shù)組元素經(jīng)過(guò)上述聲明及賦值后:*pa就是a0,*(pa+1就是a1,. ,*(pa+i就是ai./Cout Cout*(pa+i; ai, *(pa+i, *(a+i, pai都是等效的。不能寫(xiě) a+,因?yàn)閍是數(shù)組首地址是常量。設(shè)有一個(gè)int型數(shù)組a,有10個(gè)元素。用三

8、種方法輸出各元素: /使用數(shù)組名和下標(biāo):void main( int a10; int i; for(i=0; iai; cout cout ai; /使用數(shù)組名指針運(yùn)算:void main( int a10; int i; for(i=0; iai; cout *(a+i ; /使用指針變量:void main( int a10; int *p,i; for(i=0; iai; cout 動(dòng)態(tài)申請(qǐng)內(nèi)存操作符 new:new 類(lèi)型名T(初值列表)功能:在程序執(zhí)行期間,申請(qǐng)用于存放T類(lèi)型對(duì)象的內(nèi)存空間,并依初值列表賦以初值。結(jié)果值:成功:T類(lèi)型的指針,指向新分配的內(nèi)存。失?。?(NULL)釋放內(nèi)

9、存操作符delete:delete 指針P功能:釋放指針P所指向的內(nèi)存。P必須是new操作的返回值。#include using namespace std;void main(int *intArray;int eleNum;coutPlease input dynamic element number:eleNum;intArray=new inteleNum;if(intArray=NULLcoutOVERFLOW!endl;return;for(int i=0;ieleNum;i+*(intArray+i=i*2;/for(i=0;ieleNum;i+cout*(intArray+ie

10、nds;delete intArray;動(dòng)態(tài)存儲(chǔ)分配函數(shù):void *malloc( size ;參數(shù)size:欲分配的字節(jié)數(shù)返回值:成功,則返回void型指針。失敗,則返回空指針。頭文件: 動(dòng)態(tài)內(nèi)存釋放函數(shù):void free( void *memblock ;參數(shù)memblock:指針,指向需釋放的內(nèi)存。返回值:無(wú)頭文件: #include #include using namespace std;void main(int *intArray;int eleNum;coutPlease input dynamic element number:eleNum;intArray=(int *

11、malloc(eleNum*sizeof(int;if(intArray=NULLcoutOVERFLOW!endl;return;for(int i=0;ieleNum;i+*(intArray+i=i*2;/for(i=0;ieleNum;i+cout*(intArray+iends;free(intArray;引用類(lèi)型: 當(dāng)需要給某個(gè)變量取個(gè)別名,用別名去操作這個(gè)變量時(shí),就必須要使用引用類(lèi)型。引用的定義:引用必須初始化,因?yàn)橐每偸歉綄儆谀硞€(gè)實(shí)體int someInt = 5;int& rInt = someIne; /初始化修改引用的值,即是修改了附屬的實(shí)體值int a = 5;int& ra = a;ra = 8;cout 結(jié)果為:8#include using namespace std;/-void main(int int1 = 5;int& rInt = int1;cout&int1: &int1 int1: cout&rInt: &rInt rInt: int int2 = 8;rInt = int2;cout&rInt: &rInt rInt: /=20201010201010101020教學(xué)重點(diǎn)與難點(diǎn)重點(diǎn)一:內(nèi)存地址和指針的

溫馨提示

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