在 C 中,const 关键字可用于防止修改对象或指针的。让一些开发人员感到惊讶的是,语法可能会有所不同:
const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer Object const *obj; // same as const Object* obj;
问题是哪种语法先出现以及为什么两者都是正确的。
Const 放置的历史起源
C 和 C 语言语法允许从左到右解析器,这意味着编译器读取输入从左到右,并在遇到标记时对其进行处理。
在解析声明时,当 标记被消耗时,声明状态将更改为指针类型。如果 const 首先遇到 ,则限定符应用于指针声明;如果在 * 之前遇到它,则限定符适用于引用的数据。
由于语义含义不会因 const 的位置而改变,因此两种放置都被接受。
函数指针的含义
函数也会出现类似的情况指针:
再一次,从左到右的解析器解释在
首选用法
最终,一种语法相对于另一种语法没有明显的偏好。应根据可读性和开发人员偏好进行选择。
但是,如果希望与指针和函数指针的语法保持一致,则在引用类型的左侧使用 const 可能更合适:
const Object* obj; // no change to obj pointer or value Object const *obj; // no change to obj pointer or value
以上是C 中的 Const 放置:'const T”与'T const”——我应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!