資源描述:
《C++大學(xué)基礎(chǔ)教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、C++大學(xué)基礎(chǔ)教程第6章指針和引用2021/9/82/98編程風(fēng)格提示編程序的目的包括:讓程序正確運(yùn)行讓別人能夠看懂代碼要有注釋,c++代碼行數(shù)注釋比為7:32021/9/83/98編程風(fēng)格提示盡量不用全局變量、全局?jǐn)?shù)組全局變量破壞了信息的封裝性,與軟件開(kāi)發(fā)中的“信息隱藏”規(guī)則不符除非,出于性能的考慮,有必要使用全局變量2021/9/84/98編程風(fēng)格提示C++規(guī)定,main函數(shù)必須要返回一個(gè)int值。因此正確的main函數(shù)定義方式是intmain(){return0;}或者intmain(intargc,char*argv[]){re
2、turn0;}教材上的寫法有問(wèn)題2021/9/85/98指針概述指針(Pointer)和引用(Reference)是C++的擴(kuò)展數(shù)據(jù)類型。指針和引用使得C++具備匯編語(yǔ)言的某些功能,可以訪問(wèn)存儲(chǔ)器指針和引用在概念上和使用上都有相似之處,但是也有重要的差別。2021/9/86/98第六章指針和引用6.1指針的概念6.2指針的運(yùn)算6.3指針和函數(shù)6.4指針和字符串6.5通過(guò)指針訪問(wèn)數(shù)組6.6指針訪問(wèn)動(dòng)態(tài)內(nèi)存6.7引用概念2021/9/87/986.1.0變量的地址屬性變量名攜帶著存儲(chǔ)的位置信息即變量的地址屬性。266‘a(chǎn)’1280xA00x
3、A40xA5charylongxintz低地址高地址z=x的含義根據(jù)變量x的地址屬性,找到相應(yīng)內(nèi)存地址中存放的信息。把這個(gè)信息賦給變量z2021/9/88/986.1.0變量的地址屬性取地址運(yùn)算符&(address-of)設(shè)x是變量,則&x就是變量x的地址,此時(shí)系統(tǒng)使用了變量的地址屬性。&號(hào)讀作“什么的地址”,它表示返回的是變量在內(nèi)存中的地址而不是變量本身的值為了得到變量x的地址中的內(nèi)容,系統(tǒng)提供了指針運(yùn)算符*,例如*(&x)就是變量x的值。對(duì)變量的地址屬性進(jìn)行操作可以通過(guò)指針來(lái)實(shí)現(xiàn),指針就是存放地址的變量,定義指針的格式如下:int*
4、pi;//定義一個(gè)int*類型屬性的指針pilong*pl;double*pd;//定義long*型的指針pl,double*型指針pd2021/9/89/986.1.1指針和指針變量指針指針是變量或常量的地址。或者說(shuō)是在內(nèi)存中的一塊區(qū)域的地址,這塊區(qū)域存放某種類型的數(shù)據(jù)。例:定義了整型變量a,a的地址就是一個(gè)指針。也可以不定義任何變量,只是指定內(nèi)存某個(gè)地址開(kāi)始(如0x00430100)的4個(gè)字節(jié)存放整型變量,這樣的地址也是指針。指針變量存放指針的變量就是指針變量。2021/9/810/98指針變量和它所指的“位置”int*p;inta
5、=5;p=&a;0x25005…………0x10A00x2500pa內(nèi)存地址內(nèi)存地址2021/9/811/986.1.1指針和指針變量當(dāng)聲明了一個(gè)指針變量后,確定了三件事:變量本身在內(nèi)存中所分配的地址和字節(jié)數(shù),指針變量總是占有4個(gè)字節(jié);系統(tǒng)允許的地址范圍,以及地址單元內(nèi)可以存放的內(nèi)容;指針變量可以進(jìn)行的運(yùn)算。對(duì)于內(nèi)存單元的間接訪問(wèn)訪問(wèn)指針變量時(shí),只能看到指針變量的值——即一個(gè)地址。然后再通過(guò)這個(gè)地址找到相應(yīng)內(nèi)存存放的信息。2021/9/812/986.1.2指針變量的聲明和初始化指針變量聲明的格式是:<類型名>*變量名1,*變量名2;例如
6、:int*va1,*va2;char*ch1,*ch2;或者:char*ch1;char*ch2;指針變量在聲明后,變量的值(地址)是隨機(jī)的。這樣的指針變量是不能安全的使用的。2021/9/813/986.1.2指針變量的聲明和初始化在聲明指針變量時(shí)的“*”,有兩個(gè)含義:聲明變量va1、va2、ch1、ch2都是指針變量;說(shuō)明變量va1和va2的類型是(int*)型,即指向整型變量的指針。va1和va2所指定的地址單元中,只能存放整型數(shù)據(jù)。類似地,ch1和ch2的類型是(char*)型,它們所指定的地址單元中,只能存放字符。指針變量都是
7、有類型的.指針變量的類型就是它所指定的地址單元中存放的數(shù)據(jù)的類型。定義指針時(shí):int*p1,*p2;int*p1;int*p2;//推薦這種方式2021/9/814/986.1.2指針變量的聲明和初始化指針變量的初始化有兩種方法:在聲明時(shí)的初始化和聲明后的初始化。聲明指針變量后,用賦值的方式對(duì)它們進(jìn)行初始化。例如:inti1=’Y’,i2=’A’;int*pi1,*pi2;pi1=&i1;pi2=&i2;int*pi1;與int*pi1;之間只有形式上的差別int*pi1,pi2;定義了什么?*不是一種獨(dú)立類型必須附著在其他類型上202
8、1/9/815/986.1.2指針變量的聲明和初始化聲明指針變量時(shí)就進(jìn)行初始化的格式是:<類型名>*指針變量名=&變量名;其中的變量名應(yīng)該是已經(jīng)聲明或定義的同類型變量名。例如:charch1=’Y’,ch2