將指向物件的指標變數宣告為const型,並使之初始化,這樣指標值始終保持為其初始值,不能改變。
time t1(10,12,15),t2;定義指向物件的常指標的一般形式為time * const ptr1=&t1;
ptr1=&t2;
類名 * const 指標變數=物件位址;
注意應該在定義指標變數時使之初始化
指向物件的常指標變數的值不能被改變,即始終指向同乙個物件,但可以改變其所指向物件中的資料成員(非const型)的值。
往往用常指標作為函式的形參,目的是不允許在函式執行過程中改變指標變數的值,使其始終指向原來的物件。如果在函式的執行過程中,修改了該形參的值,編譯系統就會出現錯誤,給出出錯資訊,這樣比用人工來保證形參值不被修改更可靠
如果乙個變數已經被宣告成常變數,則只能用指向常變數的指標變數指向它,而不能用一般的(非const型的)指標變數指向它。
const int a;//定義常變數a對於物件也是如此,如果宣告乙個物件為常物件,則只能用指向常物件的指標指向它,而不能用一般的(非const型的)指標變數指向它。const int *p;//定義指向常變數的指標
p=&a;
const time t1;//定義常物件定義指向常物件的指標變數的格式const time *p;//定義指向常物件的指標
p=t1;
const 類名 * 指標名;
有以下幾點需要注意:
(1)乙個指向常物件的指標是可以指向乙個非const型的物件的,但是指向的物件是不能通過指標來改變的。
而乙個常物件只能由指向常物件的指標指向,具體看表:
(2)注意指向常物件的指標和指向物件的常指標的差別
time * const p;//指向物件的常指標(3)指向常物件的指標最常用於函式的形參,目的是保護形參指標所指向的物件,使他在函式執行過程中不被修改。const time * p;//指向常物件的指標
(4)如果定義了乙個指向常物件的指標變數,是不能通過它改變所指向的物件的值的,但是指標變數本身的值是可以改變的。
const time *p=&t1;//定義指向常物件的指標變數p,並指向物件t1const在*前面,則是指向常變數的指標;const在*後面,則是指向變數的常指標。p=&t2;//p改為指向t2,合法
指向變數的常指標和指向常變數的指標
剛接觸到指標時,關於指向變數的常指標和指向常變數的指標容易混淆,所以整理下,希望能夠幫助自己也幫助到大家。常指標就是我們說的指向常量的指標,顧名思義,它是用來指向常量的。實際上,c 規定只能用指向常變數的指標指向常變數,普通指標指向它就會報錯,原因也很容易理解,我們用普通指標指向常變數之後,有可能就...
指向物件的常指標變數與指向常物件的指標變數區別
time const p 指向物件的常指標變數 p 的值 p的指向 不能修改 const time p 指向常物件的指標變數,p 指向的類物件的值不能通過p來修改 將指標變數宣告為const型,這樣指標變數始終保持初值,不能改變,即其所指向不變。timet1 10,12,15 t2 time con...
c 中指標常量,常指標,指向常量的常指標區分
const char myptr char a 指向常量的指標 char const myptr char a 常量的指標 const char const myptr char a 指向常量的常量指標 從字面意思可以看出,指標是乙個常量,也就是位址不能被修改。include using names...