const char*類型是指向常量的指針,不能修改其指向的內容,當可以修改其指向的地址。
例1:
char ch[5]="lisi"; //定義一字符串ch[],并賦值
const char* pStr=ch; //定義一常量指針pStr,將ch賦給pStr
注:ch[]定義時須對其進行賦值,字符長度為5,最后一位為"\0"表示結束。
在對pStr賦值時相當于將ch[]的首地址給pStr,因為const char*類型得指針變量只可以修改其本身的值,即變量保存的內存地址。
因此該變量的值可以改變,但其指向的地址的內容不能改變。
如:*pStr="jiliang"; //錯誤的,因為其直接改變了內容,所以無法將"jiliang"賦值給ch[];
pStr="jiliang"; //正確的,因為其改變的是地址值,即pStr保存的是="jiliang"的首地址。
我們無法通過pStr來修改其指向地址的內容,但可以通過ch[]來修改內容。
使用:利用指針類型來傳遞參數時,可以定義為const char*類型,保持內容的一致性。
char* const類型是一個指針常量,可以修改地址指向的內容,但不可以修改其地址值。
例2:
char ch[5]="lisi"; //定義一字符串ch[],并賦值
const char* pStr=ch; //定義一指針常量pStr,將ch賦給pStr
注:對于指針常量,必須在定義時對其賦值。指針常量表示指針本身是常量,即地址值為常量。
如:pStr="jiliang"; //錯誤的,因為該賦值將新的字符串地址賦值給指針常量,這是不允許的;
*pStr="jiliang";//正確的,可以對指針常量指向的地址修改其內容。
小結:
const char*類型的指針其指向的內容是常量,不能修改,但其地址值可以修改;
char* const類型的指針其地址值是常量,不能修改,但其指向的內容可以修改。
參考:<<VC++深入淺出>>孫鑫