免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: txdgtwpv
打印 上一主题 下一主题

[C++] [低水平帖]定义和声明时,星号(*)是靠着类型还是靠着变量 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2011-08-26 16:54 |只看该作者
“修饰类型” 这个词应该怎样理解?
pmerofc 发表于 2011-08-25 10:14



先修正我之前的说法。
语义和语法上都可以是修饰类型的,也可以是修饰对象。
ISO C对对象声明和类型名分别做了规定。*在声明符中修饰对象,在类型名中修饰类型。这是纯粹直接的按语法分类的结果。在此之上,对应的语义也可以修饰对象或类型。
不过如果跳出C语言之外,这样未免过于冗余了。实际上指针声明符的作参与决定对象类型,因此即使是修饰对象的*,同时也在修饰类型,即使没有在语法上直接表示出来。

论坛徽章:
0
32 [报告]
发表于 2011-08-26 16:55 |只看该作者
回复  captivated


    实在嘴笨,我举个例子吧
  
   int   (*p)[3];

    你怎么写
pmerofc 发表于 2011-08-26 11:43

typedef。

论坛徽章:
0
33 [报告]
发表于 2011-08-26 16:57 |只看该作者
本帖最后由 幻の上帝 于 2011-08-26 17:12 编辑
观念上,把类型和变量分开也许是一种进步
   可惜C目前还不接受这样的语法
   int   (*)[3]    ...
pmerofc 发表于 2011-08-26 12:19

我觉得不太可能会有。这种中缀表达式的滥用是C/C++的习惯乃至传统,连Java也不能幸免(数组声明仍然兼容这种风格)。
另外,起码typedef给用户一种避免此类用法的自由,所以一些可读性差的写法也并不是无可避免的,对分离类型和对象的声明语法的需求并没有很迫切。
这种语法实际上确实较简单也较容易实现,但看来对于早已经实现了现有声明语法的编译器厂商而言没多大吸引力

题外话,这种传统应该有些涉及到语言设计的哲学上了……
对于routine,C语言为什么只提供易于使用调用栈实现的function,而不是coroutine?为什么不给用户显式清理continuation/stack frame的接口?

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
34 [报告]
发表于 2011-08-26 22:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
35 [报告]
发表于 2011-08-26 22:57 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
36 [报告]
发表于 2011-08-26 23:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
37 [报告]
发表于 2011-08-27 01:34 |只看该作者
C的确有不少事先没考虑周全的地方。不过我觉得C的那些缺点都不讨厌,也有办法避免
pmerofc 发表于 2011-08-26 23:02


用起来是不讨厌,但要深究原因的话会很郁闷,总是会有一种自己变成那种无意义的语言哲学家的错觉……还有一种问题明明存在却拿它没办法的无力感。

论坛徽章:
0
38 [报告]
发表于 2011-08-27 19:47 |只看该作者
回复  txdgtwpv


    现在我喜欢用第一个。这是《C++ Templates》中建议用的风格。这种风格非常明确地 ...
captivated 发表于 2011-08-26 08:12



    我支持这个。

论坛徽章:
0
39 [报告]
发表于 2011-08-27 23:58 |只看该作者
以前用第二种,后来改用第一种了,把类型和变量分开看着舒服些。  PS:    C++都升级了, C也该升级了吧  现有的C89、C99都显得有些古老了。

论坛徽章:
1
摩羯座
日期:2013-11-14 15:56:09
40 [报告]
发表于 2011-08-28 10:56 |只看该作者
第3个和第5个不是一样的吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP