Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 常量字符*名称vs常量字符*名称_C - Fatal编程技术网

C 常量字符*名称vs常量字符*名称

C 常量字符*名称vs常量字符*名称,c,C,两者之间有区别吗 const char* name = "name"; const char* name = "hello", something = "else"; 及 谢谢。不,没有区别,两种声明是等效的 请注意,C样式倾向于以这种方式声明指针对象: T *a; T* a; 虽然C++风格倾向于用这种方式声明指针对象: T *a; T* a; 不,没有区别,两个声明是等价的 请注意,C样式倾向于以这种方式声明指针对象: T *a; T* a; 虽然C++风格倾向于用这种方式声

两者之间有区别吗

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


谢谢。

不,没有区别,两种声明是等效的

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

T *a;
T* a;
虽然C++风格倾向于用这种方式声明指针对象:

T *a;
T* a;

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

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

T *a;
T* a;
虽然C++风格倾向于用这种方式声明指针对象:

T *a;
T* a;
没有

但两者之间有区别

const char* name = "name";
const char* name = "hello", something = "else";
这是行不通的,而

const char *name = "hello", *something = "else";
不应该

但两者之间有区别

const char* name = "name";
const char* name = "hello", something = "else";
这是行不通的,而

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

应该

这主要是口味的问题


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

这主要是一个品味问题


我个人使用
const char*name
是因为我想明确类型是指针(a
char*
),但许多人认为更正确的方法是使用
const char*name
来表示
*name
是指针(指向type
char

两者都被解析为
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
的类型


任何声称喜欢第三种形式的人,要么是痴迷者,要么是疯子

两者都被解析为
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
的类型


任何声称喜欢第三种形式的人,要么是痴迷者,要么是疯子

你能解释它们之间的区别吗?const char*a=“你好”,something=“其他”;这会将一个声明为指向char类型的指针,将某个声明为char。您可以通过执行“typedef char*pchar”来解决这个问题,它将允许:pchar a=“hello”,something=“other”;你能解释它们之间的区别吗?const char*a=“你好”,something=“其他”;这会将一个声明为指向char类型的指针,将某个声明为char。您可以通过执行“typedef char*pchar”来解决这个问题,它将允许:pchar a=“hello”,something=“other”;