理解c指针时难以理解它(第2部分)

use*_*374 2 c pointers

当我看到实际的乘法时,我问了这个问题,每个人都帮助清楚了解它.(所以我非常感激).

然而,这在不同情况下继续困扰我.

举个例子,

int main(int argc, const char * argv[] )
Run Code Online (Sandbox Code Playgroud)

为什么不在上面写上面的?

int main(int argc, const char *argv[] ) 
Run Code Online (Sandbox Code Playgroud)

有差异吗?有时我会看到一些时髦的位置*我只是不明白为什么他们有时似乎漂浮在任何他们喜欢的地方(或者谁知道他们在做什么我猜).

zwo*_*wol 7

您显示的两行代码具有完全相同的含义.C一般忽略水平空格; 唯一不同的是它(1)在字符串文字内部,(2)当它改变标记的边界时(考虑++x对比+ + x),(3)当它控制你是否是#define一个类似函数或类似对象的宏时.

在类型声明的上下文中,*不是二元乘法运算符,它是一元指针到修饰符,它总是影响它的右边的东西.为清楚起见,始终使用左侧的空格和右侧的空格来编写它,但编译器并不关心.

(在左边拥抱恒星的常见特别是C++风格是错误的,因为它具有误导性:char* a, b 不会同时声明这两个ab作为指针. char *a, b相比之下,明确表明这颗恒星只会影响a.C++ grognards会说你不应该'首先在一行上写多个变量声明,这本身就是一个合理的位置,但不是误导人类读者关于*绑定方向的有效借口.但是,这完全是风格问题,同样,编译器不关心.)