我位於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 –