const char * 、 char const * 、 char * const 三者的區別


1、const char * p   
p指向的東西,不能通過p來修改,其指向的內容可以通過其他的指針來修改

char str[] = "hello";
const char* p = str;
p[0] = 's';     // 錯誤,不能通過const char* 指針來修改其指向的值
str[0] = 's';   // 正確,其指向的值可以通過其他非const指針來修改
p++;            // 正確, 指針可以指向其他值

2、char const * p
等價於 第一種情況  const char * p
3、char * const p   (該指針為常量)
定義p的時候必須初始化,表示p 一旦指向了一個東西之后,就不能再指向其他東西,即p是個常量,p只能指向一個固定的地址。不允許有p++操作了
但是可以通過*p 來修改它所指向的內容

char str[] = "hello";
const char* p = str;
p[0] = 's';     // 正確,可以修改其指向的值
p++;            // 錯誤, 指針是const,一旦初始化,則不可以再指向其他內容

4、const char * const p
p 指向的地址不能被改變,而且p指向的東西也不能被改變

小結:

const 放在p前面,表示的是p 所代表的內容不能通過p來修改,但是可以通過其他變量來修改
const 放在* 后 p 前面,表示指針p 的值不能被改變,即p 所指向的內存地址不能被改變


免責聲明!

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



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