免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
91 [报告]
发表于 2012-02-15 00:06 |只看该作者
回复 39# 林生2010


    c11已经出了。不过只要大家一致,各种编译器能对一个标准支持好,哪个版本都无所谓。不然很蛋疼的,看看现在的c++11你就懂了。

论坛徽章:
0
92 [报告]
发表于 2012-02-21 23:34 |只看该作者
回复 91# walleeee


    编译器是核心,代码再好,编译器不给力,也是空谈。

论坛徽章:
0
93 [报告]
发表于 2012-02-21 23:36 |只看该作者
回复 92# 林生2010


    你想表达什么 我没看明白

论坛徽章:
0
94 [报告]
发表于 2012-02-21 23:44 |只看该作者
回复 93# walleeee


。。。。。。  我的意思是编译器是核心

论坛徽章:
0
95 [报告]
发表于 2012-02-21 23:47 |只看该作者
回复 94# 林生2010


    哦

论坛徽章:
0
96 [报告]
发表于 2012-02-25 17:17 |只看该作者
在定义指针变量时: char  *pc;
在声明函数是: void*  fun();

论坛徽章:
0
97 [报告]
发表于 2012-02-26 00:01 |只看该作者
记得<C缺陷>里面说那个倒霉void(*signal(int,void(*)(int)))(int)的时候大概是这么说的:
首先 外面是 void(*xxx)(int),即 (*xxx)(int) 返回类型为void,(*xxx)为该函数的`函数名',即:xxx为指向此类型函数的指针,解引用后是个函数
然后 xxx是signal(int,void(*)(int)),也就是说,signal()是一个函数,返回类型是xxx的类型,即上面说的[指向void()(int)类型函数的指针]
里面的void(*)(int)就不解释了

也就是说 void 是最终的结果,导致这个结果的是 (*signal(int,void(*)(int)))(int)这样一个函数 而这样一个函数本身也是通过signal()`计算'得到的

按照这样的说法,char * p 意思其实是 (*p) 是个char , char是p解引用得到的,p 理所当然就是个指向char的指针

至于 char * p [] 与 char (*p) [] 的问题,我的理解是:`[]' 优先级高于 '*' (这应该没什么问题) ,于是 `char * p []' 意思就是 (*(p[0]))是个char ;而 `char (*p)[]' 的意思是 ((*p)[0]) 是个 char

这样看来 还是 char *p 比较符合类型定义的本意,甚至可以写成 char (*p)

论坛徽章:
0
98 [报告]
发表于 2012-04-29 17:48 |只看该作者
我的习惯;当用typedef的时候,靠近char;  多个变量同时定义的时候,靠近每个变量; 单个变量则无所谓了

论坛徽章:
0
99 [报告]
发表于 2012-05-01 13:55 |只看该作者
Fatihyang 发表于 2011-08-23 13:44
N多代码 都是  char *str
建议楼主 多看看别人优秀的代码


此话不妥,优秀的代码里,有些是习惯,有些是必须!

论坛徽章:
0
100 [报告]
发表于 2012-05-06 09:17 |只看该作者
我的习惯就是使用第2种风格。

------------------------------------
欢迎光临我的博客:www.danoking.com [DNK的生涯|IT人的故事]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP