一、區別:
區分是常量指標還是指標常量,關鍵要看const修飾的是誰。int const與const int表達的意思是一樣的。
常量指標:本質是指標,並且這個指標是乙個指向常量的指標,指標指向的變數的值不可通過該指標修改。
其格式為:int const * p或者 const int* p指標常量:本質是乙個常量,並且使用指標來修飾它,那麼說明這個常量的值應該是乙個指標。
其格式應為:int * const p
二、demo:
int a,b;const int *p = &a;//常量指標 *p不可修改 *p = 8;(error)p 可以修改 p = &b (ok)int a;int * const p = &a //指標常量,*p可以修改*p = 8;(ok)p不可以修改 p++(error)
三、應用:在使用字串處理函式的時候,它們的引數一般宣告為常量指標。例如,字串比較函式的宣告是這樣的:
int strcmp(const char *str1, const char *str2);
可是這個函式卻可以接收非常量字串。
例如:
char *str1, *str2;
str1 = "abcde1234";
str2 = "bcde";
if(strcmp(str1, str2) == 0)
四、指向常量的指標常量
const int a = 25;const int * const b = &a;
常量指標與指標常量的區別
const 常量 指標 const int p int const p 常量指標 int const p 指標常量 常量指標通常指向常量,不能通過指標去修改常量的值。有時也會指向變數,eg int s 10 const int p s 但還是不能通過指標去修改指向的常量的值,可以通過 s 20,去修...
常量指標與指標常量的區別
這個老是容易搞混,以前很清楚,但過一段時間不用,又忘了,因此今天整理成部落格,以備以後查詢。const char 型別的指標 指向常量的指標 其所指向的內容為常量,是不可以修改的,但其指標值是可以修改的。例如 char str hello 定義乙個字元陣列 const char pstr str 把...
指標常量與常量指標的區別
指標常量是乙個常量,常量不可修改,而指標常量就是這個指標不可被修改 比如陣列名就是乙個指標常量 int a 2 int b 2 a b 報錯,陣列名是乙個指標常量,該指標不能被修改,賦值 a 2 不報錯,a代表a指標所指向的內容,該內容不是常量,可被修改常量指標是乙個指標,該指標指向乙個常量,指向的...