const char *p; char const *p; char * const p的區別


請看下面三種定義:

const char *p;

char const *p;

char * const p;

首先看第一種,我們先看p,本着”從里往外”的原則,p是一個char *類型的變量,但char *前面有一個const修飾,即p所指向的內容為const類型不可修改,我們可以寫如下程序進行實驗,當試圖對p指向的數組的第一個元素進行修改時,編譯即可發現報錯:

C語言筆試題const char *p; char const *p; char * const p;三者的區別

第二種:char const *p;  const位於char *之間,由於char *是p的類型,此種寫法和const char *等價,大家可以自行實驗,如下圖:

C語言筆試題const char *p; char const *p; char * const p;三者的區別

最后一種,char * const p; 這里const在p之前,修飾的是p,即p是不可修改的,所以,我們可以實驗:

C語言筆試題const char *p; char const *p; char * const p;三者的區別

可以看到沒有錯誤,p所指向的內容可以修改,而如果試圖修改p的值,如下:

C語言筆試題const char *p; char const *p; char * const p;三者的區別

可以發現依舊是報這個錯誤,大家可以親自上機實驗,來加深理解。

 

 

所以答案:

const char *p; // 聲明一個指向字符或字符串常量的指針(p所指向的內容不可修改)

char const *p;// 同上

char * const p;//聲明一個指向字符或字符串的指針常量,即不可以修改p的值。

 

const char *p1;   //p1可以被改變,*p1不可以被改變,既p1可以轉向

char onst *p2;     //p2可以改變,*p2不可以被改變,既p2可以轉向

char * const p3;  //p3不可以被改變,*p3可以被改變

const char const *p4;   //p4與*p4都不可以被改變


免責聲明!

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



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