int main ()
在c++的學習中,有人經常搞不清楚「常量指標」和「指標常量」這兩個概念。其實簡單一點講,「常量指標」所指向的位址上的資料是常量,而「指標常量」所指向的位址是常量,位址上面的資料是可以變化的。
下面看及格簡單的例子,可以說明他們的區別:
第乙個1
void
main();
3char
*str2=;
4char
*const
ptr1
=str1 ;5//
指標常量--指標本身是常量,指向的位址不可以變化,但是指向的位址所對應的內容可以變化67
ptr1
=str2;
//錯誤 因為這是乙個常量指標,改變指向的位址了89
printf(
"%s \n",
*ptr1);10}
1112
13//
編譯錯誤 error c3892: 'ptr1' : you cannot assign to a variable that is const 14
第二個1
void
main();
3char
*str2=;
4char
*const
ptr1
=str1 ;5//
指標常量--指標本身是常量,指向的位址不可以變化,但是指向的位址所對應的內容可以變化67
*ptr1 ='
a';//
正確 因為指向的位址的內容是可以變化的89
printf(
"%c \n",
*ptr1);10}
1112
//輸出 a13
第三個1
void
main();
3char
*str2=;
4const
char
*ptr1
=str1;5//
常量指標--指向字串常量,所指向的字串內容不能變,但是指向的位址可以變化67
ptr1
=str2;
//正確 因為指向的位址是可以變化的89
printf(
"%s \n
",ptr1);10}
1112
//輸出 hello world
第四個1void
main();
3char
*str2=;
4const
char
*ptr1
=str2;5//
常量指標--指向字串常量,所指向的字串內容不能變,但是指向的位址可以變化67
ptr1='
a';//
錯誤 因為指向的位址是內容是不可以變化的89
printf(
"%c \n
",ptr1);10}
1112
13//
編譯錯誤 error c2440: '=' : cannot convert from 'char' to 'const char *'14
相信從上面四個簡單的例子可以看出他們不一樣的地方把,在這裡要請大家注意一下的地方是:
指標常量的申明:const 放在* 和指標名之間 type * const pointer ;
常量指標的申明:const放在型別說明符之前 const type *pointer ;
指標 常量指標和指標常量
const關鍵字宣告乙個常量,常量宣告後不能修改。類似的,我們可以宣告常量指標 double radius 5 double const pvalue radius pvalue 4 可以修改其中pvalue是乙個常量指標,其宣告和初始化必須在同一條語句中,後面的程式不能為其賦予新的位址。注意,雖然...
常量指標 和 指標常量
在c 的學習中,有人經常搞不清楚 常量指標 和 指標常量 這兩個概念。其實簡單一點講,常量指標 所指向的位址上的資料是常量,而 指標常量 所指向的位址是常量,位址上面的資料是可以變化的。常量指標,表述為 是常量的指標 它首先應該是乙個指標。指標常量,表述為 是指標的常量 它首先應該是乙個常量。指標常...
常量指標和指標常量
定義 具有只能夠讀取記憶體中資料,卻不能夠修改記憶體中資料的屬性的指標,稱為指向常量的指標,簡稱常量指標。宣告 const int p int const p 注 可以將乙個常量的位址賦值給乙個對應型別的常量指標,因為常量指標不能夠通過指標修改內粗資料。只能防止通過指標引用修改記憶體中的資料,並不保...