對下列相關(guān)知識點的學習以及練習編寫時對指針的應(yīng)用:
一.對象數(shù)組
1.聲明:
類名? ? 數(shù)組名[元素個數(shù)]; Circle round[\0];
2.訪問方法:
通過下標訪問? 數(shù)組名[下標].成員名
3.對象數(shù)組初始化
·數(shù)組中每一個元素對象被創(chuàng)建時,系統(tǒng)都會調(diào)用類構(gòu)造函數(shù)初始化該對象。
·通過初始化列表賦值。
·如果沒有為數(shù)組元素指定顯式初始值,數(shù)組元素便使用缺省值初始化(調(diào)用缺省構(gòu)造函數(shù),即無參數(shù)的構(gòu)造函數(shù))。
二.
1.內(nèi)存空間的訪問方式
·通過變量名訪問,稱為直接訪問
·通過地址訪問,稱為間接訪問
2.地址運算符:&
int var;? 則&var? 表示變量var在內(nèi)存中的起始地址
3.指針變量的概念
·概念
指針:另一個變量的地址,用于間接訪問變量
指針變量:用于存放地址的變量
·聲明
例: int i;
int *i_pointer=&i;? ? 指向整型變量的指針
4.指針變量的賦值運算
指針名=地址
“地址”中存放的數(shù)據(jù)類型與指針類型必須相符。
向指針變量賦的值必須是地址常量或變量,不能是普通整數(shù)。但可以賦值為整數(shù)0,表示空指針。
指針的類型是它所指向變量的類型,而不是指針本身數(shù)據(jù)值的類型,任何一個指針本身的數(shù)據(jù)值都是unsigned long 型。
允許聲明指向 void 類型的指針。該指針可以被賦予任何類型對象的地址。
·當數(shù)組中每一個對象被刪除時,系統(tǒng)都要調(diào)用一次析構(gòu)函數(shù)。
二.指針
1.內(nèi)存空間的訪問方式
·通過變量名訪問,稱為直接訪問
·通過地址訪問,稱為間接訪問
2.地址運算符:&
int var;? 則&var? 表示變量var在內(nèi)存中的起始地址
3.指針變量的概念
·概念
指針:另一個變量的地址,用于間接訪問變量
指針變量:用于存放地址的變量
·聲明
例: int i;
int *i_pointer=&i;? ? 指向整型變量的指針
4.指針變量的賦值運算
指針名=地址
“地址”中存放的數(shù)據(jù)類型與指針類型必須相符。
向指針變量賦的值必須是地址常量或變量,不能是普通整數(shù)。但可以賦值為整數(shù)0,表示空指針。
指針的類型是它所指向變量的類型,而不是指針本身數(shù)據(jù)值的類型,任何一個指針本身的數(shù)據(jù)值都是unsigned long 型。
允許聲明指向 void 類型的指針。該指針可以被賦予任何類型對象的地址。
5.指針變量的算術(shù)運算
指針與整數(shù)的加減運算:指針 p 加上或減去 n ,其意義是指針當前指向位置的前方或后方第 n 個數(shù)據(jù)的地址。這種運算的結(jié)果值取決于指針指向的數(shù)據(jù)類型。指針加一,減一運算,指向下一個或前一個數(shù)據(jù)。
6.指向數(shù)組元素的指針
聲明與賦值
例:? int a[10],? *pa;
pa=&a[0]; 或 pa=a;
通過指針引用數(shù)組元素經(jīng)過上述聲明及賦值后:
*pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i].? a[i], *(pa+i), *(a+i), pa[i]都是等效的。不能寫 a++,因為a是數(shù)組首地址是常量。
7.指向類類型對象的指針:
聲明形式:類名? *對象指針名;
通過指針訪問對象成員? 對象指針名->成員名
三.動態(tài)內(nèi)存分配
1.動態(tài)申請內(nèi)存操作符 new? ? ? new? 類型名T(初值列表);
·功能:在程序執(zhí)行期間,申請用于存放T類型對象的內(nèi)存空間,并依初值列表賦以初值。
·結(jié)果值:成功:返回指向T類型的指針,指向新分配的一個T類型的內(nèi)存空間的首地址。失敗:0(NULL)
2.釋放內(nèi)存操作符delete
用new申請的動態(tài)空間使用完畢后,必須有程序員主動進行釋放。
·功能:釋放指針P所指向的內(nèi)存。P必須是new操作的返回值。
3.指針數(shù)組
數(shù)組的元素是指針型
Point? *pa[2];? ? ? 由pa[0],pa[1]兩個指針組成,都指向Point類型的對象。