经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
快速解决 const 与 typedef 类型组合时 ,const修饰谁的问题
来源:cnblogs  作者:goto2091  时间:2023/8/14 8:51:50  对本文有异议

C++使用typedef 给复合类型定义别名时,与const结合会产生看似“令人困惑”的类型推定,例如

  1. typedef char* pstring;
  2. const pstring cstr=0;
  3. const pstring *ps;

cstr到底是什么类型? 如果直接把pstring 展开成 char* ,就会认为 cstr是 const char * 类型,从而认为cstr是一个指向const char类型的指针。

但是实际上cstr是指向 char* 的const 即常量指针。

难以理解的原因在于我们用现代中文的书写方式思考。

实际上,pstring 是 a pointer to char, 那么const 自然先修饰(modifier) pointer, 故cstr是a const pointer to char,即指向char的const指针。

最后一个例子可以用同样方式展开, ps is a pointer to const pstring, 继续展开,得到ps is a pointer to const pointer to char。

英语把定语后置使得可以进行类似“递归”的表达,现代汉语常把定语前置,汉语文言文倒是有大量的定语后置表达方式。

原文链接:https://www.cnblogs.com/goto2091/p/17627178.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号