1

有没有区别

const char* name = "name";

const char *name = "name";

谢谢你。

4

4 回答 4

8

不。

但是两者之间是有区别的

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

这不起作用,而

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

应该

于 2013-02-26T19:50:35.953 回答
3

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

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

T *a;

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

T* a;
于 2013-02-26T19:50:00.400 回答
2

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

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

x = *p;

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

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.

任何声称喜欢第三种形式的人要么是拖钓,要么是疯了。

于 2013-02-26T22:33:13.023 回答
0

这主要是一个品味问题。

我个人使用const char* name是因为我想明确指出类型是指针(a char*),但很多人认为更正确的是使用const char *name来表明它*name是指针(类型char

于 2013-02-26T19:52:43.490 回答