只是想知道以下两者的区别:
char* var;
char *var;
发布于 2018-03-05 09:53:08
这种情况没有区别。但是,你应该更喜欢char *var;
。
这是因为该*
变量与变量名称更密切相关,而不是基本类型的一部分。例如,如果你这样做:
char* a, b;
你有什么,是a
一个指针char
,和b
,一个char
。这很混乱!由于*
字符更接近char
关键字,因此我们期望这两个变量的类型都是指针char
,但*
实际上仅与关联a
。(这与char a[10], b;
在注释中由teppic指出的类似;说明[10]
符同样仅与相关联a
,因此只能a
是数组。
正确的声明是:
char *a, *b;
把说明*
符放在变量的附近意味着当你打算让一个变量成为一个指针而另一个变量不是指针时很容易看到发生了什么:
char *a, b;
有些人喜欢在之前和之后放置一个空间*
:
char * a, * b;
这是上面所说的同样的问题:如果b
不是指针,那么声明(char * a, b;
)也可能导致程序员的意图不确定。因此我建议不要*
在变量名和变量名之间放置空格1。
任何你看它的方式都char* var;
应该被视为不好的风格。根据语言规范,它在语法上是正确的,但会导致无法读取的代码,因为它似乎表明说明*
符是同一声明中所有变量共享的类型的一部分,而不是。(就像在同一行写一个复杂的函数一样 - 它有效,但这是一个糟糕的主意,有些情况下可读性和可维护性取代了个人风格偏好,这就是其中之一。)
1个人而言,我更喜欢把一个空间后,*
只用函数的返回值打交道时:
char * foo();
这是毫不含糊的:它是一个返回指针的函数char
。
char *foo();
程序员是指一个返回指针的函数char
,还是他的意思是创建一个指向返回函数的指针char
?该语言将解决此问题与其他原型相同,但我们的目标是可读性,这意味着正确传达我们对人类的意义,而不仅仅是编译器。
发布于 2018-03-05 11:12:11
没什么区别,只是偏好问题
https://stackoverflow.com/questions/-100004194
复制相似问题