首页 > 后端开发 > C++ > C 中的 Const 放置:'const T”与'T const”——我应该使用哪个?

C 中的 Const 放置:'const T”与'T const”——我应该使用哪个?

Barbara Streisand
发布: 2024-12-18 11:51:16
原创
939 人浏览过

Const Placement in C  : `const T` vs. `T const` – Which Should I Use?

为什么“const T”和“T const”都有效,你应该使用哪个?

在 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 的位置而改变,因此两种放置都被接受。

函数指针的含义

函数也会出现类似的情况指针:

  • void * function1(void) 声明一个返回 void 指针的函数。
  • void (* function2)(void) 声明一个指向返回 void 的函数的函数指针.

再一次,从左到右的解析器解释在

首选用法

最终,一种语法相对于另一种语法没有明显的偏好。应根据可读性和开发人员偏好进行选择。

但是,如果希望与指针和函数指针的语法保持一致,则在引用类型的左侧使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板