const 指針


const char * ch

const在*前面表示這是一個字符串常量指針,它所指向的字符串不能被修改,但是這個指針的指向可以改變,它和char const *ch是一樣的,比如:
1
2
    
const char *ch="123";//指向常量字符串123,123的內容不能被修改,但可以改變ch的指向
ch="Hello World!";//可以改變ch的指向

如果const在*的后面,則表示這是一個指針常量,它的指向不能被修改,但可以修改批所指向的內容,比如:

1
2
3
4
    
char c[] = "123";  // 該出變量c就在指針常量,內存中為棧實現,不可以改變指向。
char * const ch=c; //ch的指向不能被修改,但它所指向的內容視情況可以被修改,
//比如由於c是個字符數組,所以,可以通過ch修改c數組的值
ch[0]='4';//修改c[0]為4,c變成"423"

看到一份編程規范說:
如果函數參數是指針,且僅作輸入用,則必須在類型前面加上const,以用來防止該指針在函數體內被意外修改。

舉個最簡單的例子吧,試試能編譯通過嗎:

1
2
    
void print(char *str)
 {
    printf("%s\n", str);
}
const char *str = "hello world";
print(str);

當參數是char *時不能接受const char *類型的參數,而當參數類型是const char *時,可以接受char *、const char *;也就是提高了代碼的參數的可接受范圍。
 
---------------------  
作者:Tonyswift  
來源:CSDN  
原文:https://blog.csdn.net/takejian/article/details/79751399  
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM