我位于C相当新的,我不知道以下两个变量声明之间的区别:C中的int * ptr和int * ptr有什么区别?
int* ptr;
int *ptr;
我认为在声明int* ptr;
,ptr
的价值不能被改变,而这是可以改变的对于申报,int *ptr;
我不知道是不是这样。
请帮我理解两个声明背后的概念。
我位于C相当新的,我不知道以下两个变量声明之间的区别:C中的int * ptr和int * ptr有什么区别?
int* ptr;
int *ptr;
我认为在声明int* ptr;
,ptr
的价值不能被改变,而这是可以改变的对于申报,int *ptr;
我不知道是不是这样。
请帮我理解两个声明背后的概念。
对于编译器来说,两个声明之间没有区别。
对于读者来说,前者可能意味着“int *”类型适用于同一语句中的所有声明。但是,*仅绑定到以下标识符。
例如,以下两个语句只声明一个指针。
int* ptr, foo, bar;
int *ptr, foo, bar;
该语句声明了多个指针,它可以防止使用“int *”间距。
int *ptr1, *ptr2, *ptr3;
C中的空格大多不重要。偶尔有空间很重要的情况,但这些情况很少,而且很少。你发布的两个例子是相同的。
像其他人说的。没有区别。如果你想了解更复杂的C类型声明,你可以找到这个链接用户。 Reading C declarations。
这就是所谓的空白操作符重载,在这里看到:http://www2.research.att.com/~bs/whitespace98.pdf
我知道这是一年前发布的,但该链接真的很棒!谢谢 – anpatel
int *p;
*p
是编译器,(int*) is a type named pointer
没有意义。
[C:是否存在“int \ * fooBar;”之间的差异和“int \ * fooBar;”?](http://stackoverflow.com/questions/2093459/c-is-there-a-difference-between-int-foobar-and-int-foobar)和[int \ * i和int \ * i](http://stackoverflow.com/questions/3770187/difference-between-int-i-and-int-i),[int \ * p和int \ * p声明之间的区别](http://stackoverflow.com/questions/5590150/difference-between-int-p-and-int-p-declaration)以及至少一些其他人。 –
http://stackoverflow.com/questions/3770187/difference-between-int-i-and-int-i –