天天看點

常量指針與指針常量的差別

一、”const int” 與 “int const” 

我們需要明白,const放在資料類型(int)前面和資料類型(int)後面是一樣的。是以,

const int *ptr 與 int const *ptr 是等價的

二、簡單了解“const int *ptr”, “const int * const ptr”, “int * const ptr”的本質含義 

在英文裡面,”*“ 被念做 " pointer to ",朗讀的順序是從右到左。是以,

const int *ptr = ptr pointer to const int(指向常量的指針)

int const *ptr = ptr pointer to const int(指向常量的指針) 

int * const ptr = const ptr pointer to int(指向整型的指針常量)

const int * const ptr = const ptr pointer to const int(指向常量的指針常量) 

指向常量的指針,是指指針本身并不是常量,而指針所指向的内容是一個常量。是以,指向常量的指針,指針本身可以被修改,但*ptr也就是指針所指向的内容不能被修改。 

指向整型的指針常量,是指指針本身是常量,而指針所指向的内容不是常量。是以,指向整型的指針常量,指針本身不能被修改,而指針所指向的内容可以被修改。 

指向常量的指針常量,按照前面所說,是指指針本身是常量且指針所指向的内容也是常量。是以,指向常量的指針常量,指針本身和指針所指向的内容都不能被修改。 

三、ptr++和*ptr++的合法性 

按照二裡面的分析,

const int *ptr 和 int const *ptr,ptr++合法,但 *ptr++ 不合法; 

int * const ptr,ptr++ 不合法,但 *ptr++ 合法; 

const int * const ptr,兩者均不合法。