怎麼理解C語言的複雜宣告?

時間 2021-06-01 12:04:52

1樓:

char(*

(*X()))

()X是乙個函式,返回值是乙個指標,該指標指向乙個陣列,陣列裡的元素是函式指標,這些函式指標所指向的函式的返回值是char型別。

char(*

(*X[

3])())[5]

X是乙個3個元素的陣列,陣列裡的元素是函式指標,這些函式指標所指向的函式的返回值也是指標,該指標指向乙個有5個char型別元素的陣列。

2樓:Belleve

很多人認為 C 的型別宣告不直觀,然而如果不直觀為什麼 K&R 要如此設計?

實際上 C 的宣告其實很好理解的:

char(*

(*X[

3])())[5]

的含義就是:「(*(*X[3-1])())[5-1]」 的型別是 char。

或者說,變數宣告

T E的含義是把有關變數 x 的表示式 E 的型別宣告為 T。

3樓:

3,這是3個元素陣列,裡面放的是指標,指標的型別乙個函式(指標),這個函式的引數為空,返回值乙個指標,指向5個char元素的陣列!

4樓:Xi Yang

完全應當這樣:typedef char* (*func_t) ();

typedef func_t** (*func2_t) ();

如何理解 C 中 int i 的宣告方式?

我的偏好,當定義指標型別物件的時候,比如你的例子,我寫成int a,理由,為了統一,好記,int 是型別名,a是變數名.指標是復合型別,不同型別復合出的指標型別型別不同。 Shark 個人偏好把int 看做乙個整體,把i作為變數,實際上這也符合從右向左看的原則。至於int i的寫法,我認為可以理解為...

如何理解c c 語言的宣告以及型別?

iCAPCOM int a可理解為 int a,也可以理解成int a,對編譯器來說沒有區別。都是說 a的資料型別是指向int型的指標,指標是一種變數 可理解這個指標a是乙個箭頭指向乙個變數所在的記憶體位址 int a表示指標a是乙個箭頭指向乙個變數所在的記憶體位址,這個位址儲存的變數也是乙個箭頭指...

c語言的變數和指標,怎麼理解?

zhonyong 自問自答 c語言的變數,比如如果有下面的語句 char c a 這裡定義了char型別的變數c,分配了乙個位元組的儲存空間,並且賦初值為 a 再來看 int a 這條語句定義了乙個沒有賦初值的int型變數a,在32位cpu上,即是分配了4個位元組的儲存空間。因為沒有賦初值,所以4個...