2013-02-26 80 views

回答

7

没有。

但有

const char* name = "hello", something = "else"; 

这将无法正常工作之间的差异,而

const char *name = "hello", *something = "else"; 

应该

+0

你能解释一下那些有什么区别? – user1334858 2013-02-26 20:06:58

+0

const char * a =“hello”,something =“else”;这将声明一个指向char类型的指针,并将其指定为char。你可以通过做一个“typedef char * pchar”来解决这个问题,它允许:pchar a =“hello”,something =“else”; – Dmitry 2013-02-26 20:08:52

2

不,没有区别,两个声明都是等价的。

注意,空调风格趋于声明指针对象是这样的:

T *a; 

而C++风格趋于声明指针对象是这样的:

T* a; 
0

它基本上是一个口味问题。

,因为我要明确指出的类型是指针(一个char*),但很多人认为,更正确的是使用const char *name表明​​是指向我个人使用const char* name(输入char

1

两者都被解析为const char (*name) = "name"; - *被绑定到声明器,而不是类型说明符。

C和C++中的声明基于表达式的类型,而不是对象。如果你有一个指向某种类型的T,并且您要访问所指向的价值,你的尊重指针:

x = *p; 

的类型表达*pT,所以指针的声明是

T *p; 

在你的情况,name指向一个char值开头的字符串文字。如果我们想要去的字符值'n',我们就喜欢写东西

const char start = *name; // assigns 'n' to start 

因此,表达​​是const char的类型,所以我们通常写声明

const char *name; 

因为C声明语法如何工作,围绕*令牌的空白无关紧要。你可以写成:

const char *name; 
const char* name; 
const  char   *       name; 

或其他一些组合。我和其他许多人更喜欢第一种形式,因为它准确地反映了声明语法。还有其他人更喜欢第二种形式,即使它对语法有一些误导性的看法,因为它强调name的类型。

任何声称喜欢第三种形式的人都是驯服或疯狂的。