簡體   English   中英

char * x,y,z; char * x,y,z; char(*)x,y,z ;?之間有什么區別?

[英]What is the difference between char * x,y,z;char* x,y,z;char (*)x,y,z;?

好吧,我迷失在這些指針中,有人可以確切地告訴我char * x,y,z;之間的區別是什么char * x,y,z; char* x,y,z; char (*)x,y,z; 如果可以,請為您的答案提供資源。

前兩個意思相同。 它們將x聲明為指向char的指針,將y和z聲明為char變量。 第三個將導致語法錯誤,並且正如@danielfranca在注釋中指出的那樣,將無法編譯。

這兩個記錄

char * x,y,z; 
char* x,y,z;

是相同的,相當於

char *x;
char y;
char z;

考慮到這些聲明是等效的

char*x;
char* x;
char * x;
char *x;

它們都將變量x聲明為char的指針。

這個記錄

char (*)x,y,z;

無效,不會被編譯。

我想你的意思是以下幾點

char (*x),y,z;

在這種情況下聲明

char ( *x );

相當於

char *x;

您可以在括號中附上聲明者。 所以你可以寫上面的記錄

char ( *x ), ( y ), ( z );

如果你問這個問題,可能是因為你正在尋找一種簡單的方法來聲明x,y和z都是字符的指針。

在大多數情況下,你應該清楚它:

char *x, *y, *z;

在經常使用它的更復雜的情況下,您可以使用typedef:

typedef char *cp_t;
cp_t x, y, z;

以與您將使用它們相同的方式聲明變量。

char *x, y, z;

*x是char, y是char, z是char。 所以x是指向char的指針。

void f(void), (*g)(void);

f*g是沒有參數或返回值的函數。 所以g是指向這種函數的指針。 需要*g左右的括號,因為(void)*更緊密地綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM