当前位置:  开发笔记 > 编程语言 > 正文

什么更有意义 - char*string或char*string?

如何解决《什么更有意义-char*string或char*string?》经验,为你挑选了5个好方法。

在以下声明中:

char* string1, string2;

string1是一个字符指针,但string2只是一个字符.因此,声明通常格式如下:

char *string1, string2;

这使得它*适用于string1但不是更清楚string2.好的做法是避免在一个声明中声明多个变量,特别是如果它们中的一些是指针.



1> Greg Hewgill..:

在以下声明中:

char* string1, string2;

string1是一个字符指针,但string2只是一个字符.因此,声明通常格式如下:

char *string1, string2;

这使得它*适用于string1但不是更清楚string2.好的做法是避免在一个声明中声明多个变量,特别是如果它们中的一些是指针.


这是胡说八道.为什么每个人都对这个边缘案件着迷?!在决定如何对齐星号时,需要考虑更重要的因素.
恕我直言,这不应该被认为是一个很好的答案.考虑到: - 我们在谈论C++ - 类型是char* - 你传递的变量是"string",很少是"*string". - 变量必须尽可能晚地声明,因此根据定义,它不是在同一行而不是另一行. - Bjarne说:"一个典型的C++程序员写int*p ...我显然更喜欢强调并认为它对于使用C++的更高级部分很重要. - const char*const string然后char*string更有意义.为清楚起见,我甚至更喜欢char*string.
我觉得在同一行中声明不同类型的变量是不合理的.

2> smo..:

Bjarne Stroustrup有话要说:

当人们试图用单个声明声明几个指针时,(仅)会产生严重的混淆:

int* p, p1; // probable error: p1 is not an int*


如果你滚动浏览Stroustup的常见问题解答,看看他在自己的代码中实际使用了哪种指针样式很有趣.
@otto嗯,如果你真的读过他的帖子,你会发现他正在使用他所说的他喜欢的风格.这个答案有点误导,因为它隐藏了实际的上下文,重要的一点是:"*一个'典型的C++程序员'编写`int*p;`并解释它''p`是一个指向`int`'的指针,强调确实p的类型是`int*`.**我显然更喜欢强调**[...].*

3> Johannes Sch..:

从技术上讲,写作是有道理的

char *f

因为*f是声明器,而char声明说明符是指定所有声明符的基本类型.的说明符包含像运营商(),[]并且&其可以被认为修改基本类型的,并且实际的标识符.

我使用上面*的标识符形式,因为它强调*f实际上是声明符,而是char基本类型.

在某种程度上,当运算符应用于标识符时,可以考虑声明符中的修饰符以在声明说明符中生成类型.但它并不总是奏效:

int a, *b, &c = a, d(), e[1], C::*f;

注意如何所有的a,*b,d()e[1]静态解析为int -从开&cC::*分别声明(因此需要初始化)的引用和指向类成员.



4> Christoph..:

没有人提到的是以下内容

char *string

也可以读作声明表达式的类型*string(读取:应用于指针的间接运算符string)as char.从这个角度来看,符号是完全合理的.

话虽这么说,我用

char * string

我自己;)



5> Brian Neal..:

(对于大多数用途,std :: string优于char*.)

我总是把*和类型一起放在char*中,因为正如Stroustrup所说,这强调了类型.

我从不在一行上声明变量,以避免在这里的回答中讨论的常见问题;

char* p, q;  // oops, probably not what was meant
// this is mandated by our style guide:
char* p;
char* q;

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有