[英]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.