Dom*_*ber 5 c c++ coding-style
简单的问题是:你为什么写
char *foo;
Run Code Online (Sandbox Code Playgroud)
并不是
char* foo;
Run Code Online (Sandbox Code Playgroud)
让我解释一下:对我来说(来自Java),声明就是这样的
<variable-type> <variable-name>;
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我声明了一个名为footype 的变量char*(因为它是一个指向char的指针).但无论我在哪里阅读c/c ++/c#-Code它看起来像一个名为*footype 的变量char.编译器不关心空格,但我作为开发人员.
tl; dr我要求的是写作的一个很好的解释char *foo而不是char* foo(正如所解释的,对我来说似乎更方便).
Ada*_*man 13
想一想以下声明:
char *p, c;
Run Code Online (Sandbox Code Playgroud)
这声明了一个指向char的指针p和一个名为的变量字符变量c.这表明将变量声明视为具有您描述的简单明确的格式并不完全正确.
需要明确的是,在 C 和 C++ 中,两者都是完全合法的,并且没有单一商定的“最佳方法”。
写的原因char *foo是这样的代码:
char* foo, bar;
Run Code Online (Sandbox Code Playgroud)
正如您在随意阅读代码时所期望的那样,这不会声明两个字符指针。它声明了一个字符指针 (foo) 和一个字符 (bar)。
如果你想声明两个字符指针,你需要这样:
char* foo, * bar;
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,所以更一致的版本是这样的:
const *foo, *bar;
Run Code Online (Sandbox Code Playgroud)
这是明确表示*确实是该特定变量的限定符而不是绑定到类型的唯一方法。
但是很多人,包括我自己,都喜欢和你一样,并且总是写char* foo
Then 我只需要避免在像上面一样的单个语句中声明两个变量。总的来说,这并不难。;)