一、”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,兩者均不合法。