C 中指向物件的常指標和指向常物件的指標

2022-08-30 16:57:16 字數 1357 閱讀 1262

將指向物件的指標變數宣告為const型,並使之初始化,這樣指標值始終保持為其初始值,不能改變。

time t1(10,12,15),t2;

time * const ptr1=&t1;

ptr1=&t2;

定義指向物件的常指標的一般形式為

類名    *    const    指標變數=物件位址;

注意應該在定義指標變數時使之初始化

指向物件的常指標變數的值不能被改變,即始終指向同乙個物件,但可以改變其所指向物件中的資料成員(非const型)的值。

往往用常指標作為函式的形參,目的是不允許在函式執行過程中改變指標變數的值,使其始終指向原來的物件。如果在函式的執行過程中,修改了該形參的值,編譯系統就會出現錯誤,給出出錯資訊,這樣比用人工來保證形參值不被修改更可靠

如果乙個變數已經被宣告成常變數,則只能用指向常變數的指標變數指向它,而不能用一般的(非const型的)指標變數指向它。

const int a;//定義常變數a

const int *p;//定義指向常變數的指標

p=&a;

對於物件也是如此,如果宣告乙個物件為常物件,則只能用指向常物件的指標指向它,而不能用一般的(非const型的)指標變數指向它。

const time t1;//定義常物件

const time *p;//定義指向常物件的指標

p=t1;

定義指向常物件的指標變數的格式

const    類名    * 指標名;

有以下幾點需要注意:

(1)乙個指向常物件的指標是可以指向乙個非const型的物件的,但是指向的物件是不能通過指標來改變的。

而乙個常物件只能由指向常物件的指標指向,具體看表:

(2)注意指向常物件的指標和指向物件的常指標的差別

time * const p;//指向物件的常指標

const time * p;//指向常物件的指標

(3)指向常物件的指標最常用於函式的形參,目的是保護形參指標所指向的物件,使他在函式執行過程中不被修改。

(4)如果定義了乙個指向常物件的指標變數,是不能通過它改變所指向的物件的值的,但是指標變數本身的值是可以改變的。

const time *p=&t1;//定義指向常物件的指標變數p,並指向物件t1

p=&t2;//p改為指向t2,合法

const在*前面,則是指向常變數的指標;const在*後面,則是指向變數的常指標。

指向變數的常指標和指向常變數的指標

剛接觸到指標時,關於指向變數的常指標和指向常變數的指標容易混淆,所以整理下,希望能夠幫助自己也幫助到大家。常指標就是我們說的指向常量的指標,顧名思義,它是用來指向常量的。實際上,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...