“int* p”正确还是“int *p”正确?

 
  
二者都是正确的,因为二者在 C 和 C++中都是有效的,而且意义完全一样。就语言的定义与相关的编译器来说,我们还可以说“int*p”或者“int * p”。 
  
在“int* p”和“int *p”之间的选择与正确或错误无关,而只关乎风格与侧重点。C侧重表达式;对声明往往比可能带来的问题考虑得更多。另一方面,C++则非常重视类型。 
  
一个“典型的 C 程序员”写成“int *p”,并且解释说“*p 表示一个什么样的 int”以
强调语法,而且可能指出 C(与 C++)的语法来证明这种风格的正确性。是的,在语法上*
被绑定到名字p 上。 
  
一个“典型的 C++程序员”写成“int* p”,并且解释说“p是一个指向 int 的指针类型”
以强调类型。是的,p 是一个指向 int 的指针类型。我明确地倾向于这种侧重方向,而且
认为对于学好更多的高级C++这是很重要的。 
  
严重的混乱(仅仅)发生在当人们试图在一条声明中声明几个指针的时候: 
  
    int* p, p1; // 也许是错的:p1不是一个 int* 
  
把*放到名字这一边,看来也不能有效地减少这种错误: 
  
    int *p, p1; // 也许是错的? 
  
为每一个名字写一条声明最大程度地解决了问题——特别是当我们初始化变量的时候。人们
几乎不会这样写: 
  
    int* p = &i; 
    int p1 = p; // 错误:int用一个int*初始化了 
  
如果他们真的这么干了,编译器也会指出。 
  
每当事情可以有两种方法完成,有人就会迷惑。每当事情仅仅是一个风格的问题,争论就会
没完没了。为每一个指针写一条声明,而且永远都要初始化变量,这样,混乱之源就消失了。

posted on 2007-03-24 09:45 阿刚 阅读(439) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

常用链接

留言簿(1)

随笔档案

文章档案

C++ BBS

C++ FAQ

C++ WEBSITE

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜