Const Char * name vs Const Char * name

时间:2013-02-26 19:49:22

标签: c

之间有区别吗?
const char* name = "name";

const char *name = "name";

谢谢。

4 个答案:

答案 0 :(得分:7)

没有

之间存在差异
const char* name = "hello", something = "else";

这不起作用,而

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

答案 1 :(得分:2)

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

请注意,C样式倾向于以这种方式声明指针对象:

T *a;

而C ++风格倾向于以这种方式声明指针对象:

T* a;

答案 2 :(得分:2)

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

C和C ++中的声明基于表达式的类型,而不是对象。如果你有一个指向某个类型T的指针,并且你想要访问指向的值,你可以使用指针:

x = *p;

表达式 *p的类型是T,因此指针的声明是

T *p;

在您的情况下,name指向char值,该值以字符串文字开头。如果我们想要获得字符值'n',我们会写类似

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

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

const char *name;

由于C声明语法的工作原理,*令牌周围的空格并不重要。你可以把它写成

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

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

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

答案 3 :(得分:0)

这主要是品味问题。

我个人使用const char* name,因为我想明确表示该类型是一个指针(char*),但很多人认为使用const char *name表示更正确*name是一个指针(类型char