首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >char*var和char*var之间的差异?

char*var和char*var之间的差异?
EN

Stack Overflow用户
提问于 2018-03-05 01:17:15
回答 2查看 0关注 0票数 0

只是想知道以下两者的区别:

char* var;
char *var;
EN

回答 2

Stack Overflow用户

发布于 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?该语言将解决此问题与其他原型相同,但我们的目标是可读性,这意味着正确传达我们对人类的意义,而不仅仅是编译器。

票数 0
EN

Stack Overflow用户

发布于 2018-03-05 11:12:11

没什么区别,只是偏好问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档