1、物件陣列
(1)物件陣列的定義與訪問
定義物件陣列:
類名 陣列名[元素個數];
訪問物件陣列元素,通過下標訪問:
陣列名[下標].成員名
(2)陣列元素所屬類的建構函式
元素所屬的類不宣告建構函式,則採用預設建構函式。
各元素物件的初值要求為相同的值時,可以宣告具有預設形參值的建構函式。
各元素物件的初值要求為不同的值時,需要宣告帶形參的建構函式。
當陣列中每乙個物件被刪除時,系統都要呼叫一次析構函式。
2、指標的概念、定義和指標運算
程式在執行時每個變數都對應乙個記憶體位址,通常我們都是對變數的值進行操作,很少考慮對變數的位址進行操作,但確實有些時候需要利用變數的記憶體位址才能完成一些工作,或者更利於工作的完成。
例如,當呼叫函式時陣列型別引數不是將整個陣列的每乙個值都傳到函式內部,而是向函式內部傳遞了陣列的位址,在函式內部對陣列引數的使用就直接轉化為對外部陣列的操作。這種傳位址方式極大地簡化了程式呼叫的方式,也為程式設計人員提供了方便。因此,對位址的操作是c++語言中一項重要內容。
(1)指標概念
(2)指標變數定義
儲存類別 資料型別 *指標變數名
儲存類別包括:extern、static和auto。
資料型別可以是基本型別,如:int、float、char、double等,也可以是陣列、指標等資料型別。
通常把指標指向的變數的資料型別稱為指標的資料型別(也稱為基型別);而任何乙個指標變數本身資料值的型別都是unsigned long int。
注意:定義乙個指標變數必須用符號「*」,它表明其後的變數是指標變數,但千萬不要認為「*p」是指標變數,指標變數是p而不是*p。
(3)與位址相關的運算
* 運算子:指標運算子,或指向運算子,也稱間接運算子,*p代表p所指向的變數。
注意:在指標變數的定義和指標變數的引用中都有*p。但引用指標時的*p與定義指標變數時用的*p是有區別的,它們形式上相似,而含義不同。
有關指標表示方法的區別:
例如,有乙個指標px ,
px — 指標變數,它的內容是位址量。
*px— 指標的目標變數,它的內容是資料。
&px — 指標變數占用的儲存區域的位址。
int *ptr = &i; //取i的位址賦給ptr
其實分開寫 :int *ptr;
ptr=&i;
(4)const指標
關鍵字const放在不同的位置表示的意義也不相同:
(1)關鍵字const放在指標型別前,就是宣告乙個指向常量的指標變數。此時,在程式中不能通過指標來改變它所指向的值,但是指標本身的值可以改變,即指標可以指向其他資料。
格式: const int *ptr
(2)關鍵字const放在「*」號和指標名之間,就是宣告乙個指標常量(也稱常指標)。因此,指標本身的值不可改變,也即它不能再指向其他資料,但它所指向的資料的值可以改變。
格式:int *const ptr
(3)關鍵字const在上述兩個地方都加,則是宣告乙個指向常量的指標常量(指向常量的常指標),指標本身的值不可改變,它所指向的資料的值也不能通過指標改變。
格式: *const int *const ptr
字串和指標
1 字串反轉函式 void string reverse const char ptr,char str 2 找子串 include include include int main for i 0 i len str len ptr 1 i if i len str len ptr return ...
指標 和 字串
用指標遍歷字串的所有字元 1 定義乙個指標p 2 char p 3 4 定義乙個陣列s存放字串 5 char s mj 6 7 指標p指向字串的首字元 m 8 p s 或者 p s 0 9 10 for p 0 p 用指標直接指向字串 1 include 2 3 int main 4 其實,呼叫st...
字串指標和字元陣列
很多剛從c 轉c 的人都不明白,在c 中這樣的 char pchar hello!定義字元指標pchar 指向乙個字元陣列首 元素即h pchar h 問題所在行 到了c 中怎麼就不行了?你翻遍參考書,都會說,pchar 指向的是常量,怎麼能允許改變呢?你又問了,怎麼我在c 中執行的好好的?沒人回答...