问题描述:指针与const限定符关系相关复杂,不同的组合就会有不同的意义,让人很犯晕,下面总结一个很实用的识别方法。
示例:说出下面指针与const限定符结合后所代表的意义
1、const char *p
2、char const *p
3、char* const p
4、const char* const p
下面介绍一个简单的判断方法:
例1:首先我们从右往左看,写成括号的优先级就是(const (char (*p))),由最里面的括号可以知道p是一个指针,再到外面一个括号可以知道p是一个指向char类型的指针,再到最外面一个括号可以知道p是一个指向const char类型的指针。
例2:我们也是从右往左看,写成括号的优先级(char (const (*p))),由最里面的括号可以知道p是一个指针,再到外面的括号可以知道p是一个const型指针,再到最外面一个括号可以知道p是一个指向char类型的const型指针。
例3:写成括号的优先级(char (*(const p))) ,由最里面的括号可以知道p是一个const型变量,再到外面的括号可以知道p是一个const型指针,再到最外面一个括号可以知道p是一个指向char类型的const型指针
例4:写成括号的优先级(const (char (* (const p)))),由最里面的括号可以知道p是一个const型变量,再到外面的括号可以知道p是一个const型指针,再到外面的括号可以知道p指向的一个const char类型的变量。