常量指针与指针常量的区别

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

你可能感兴趣的:(CPP,C)