C語言複雜宣告解讀簡明方法

2021-09-07 15:49:33 字數 784 閱讀 3850

//char (*(*x[3])())[5];//x是什麼型別的變數?

//

//分析c語言宣告,關鍵是搞清楚這個變數是個什麼東西(函式、指標、陣列),

//是函式那麼剩下的就是他的引數和返回值,

//是指標那剩下部分是說明他指向什麼,

//是陣列剩下的部分就是說明陣列的成員是什麼型別。

//解析c語言宣告規則:

//從左側第乙個識別符號開始,按照優先順序進行結合。*表示是..的指標,const表示唯讀的,volatile表示可變的,表示是陣列,()表示是函式。

//

//x和[3]結合說明是乙個大小為3的陣列,該陣列的每個元素為一類指標,該類指標指向一類函式,該類函式無引數,返回一類指標,該類指標指向乙個大小為5的char型陣列

#include

#include

charnum[5];

char(*x00())[5]

intmain()

//typeid(x).name() is char (* (__cdecl**)(void))[5]

C語言複雜宣告

專家程式設計 第三章介紹了如何分析複雜的宣告,講的非常不錯。對於作者介紹的分析複雜宣告的方法,我沒有完全掌握,不過,我有我自己的一套方法來解析複雜的宣告,正所謂條條大道通羅馬,只要結果一樣,必須在乎過程呢。今天在網上找了幾個複雜的宣告,練練手 宣告的例子全部來自網路,原諒出處未詳 記下此文,作個標記...

C語言複雜宣告

問題1 宣告與函式 void 0 讓我們從兩個不同的途徑來詳細分析這個問題。分析 首先,最基本的函式宣告 void function paramlist 最基本的函式呼叫 function paramlist 鑑於問題中的函式沒有引數,函式呼叫可簡化為 function 其次,根據問題描述,可以知道...

複雜宣告 C語言

今天看了 c專家程式設計 裡的 分析c語言的宣告 一章,終於懂了c語言的複雜宣告是怎麼解析的。雖然在平時寫 的時候用到複雜宣告的情況幾乎沒有,這裡還是做乙個記錄,也是加深對c語言宣告的理解。以下規則來自 c專家程式設計 c語言宣告的優先順序規則 c.如果const或volatile 關鍵字的後面緊跟...