C語言的複雜宣告

2021-07-27 20:17:38 字數 386 閱讀 1734

typedef的作用是類似於宣告乙個變數,但是這個變數就代表了這種型別的別名。

比如 typedef int* (*p)(int) 則p就是這樣一種函式指標的別名,這種函式的原型是 int * func(int);

對於複雜指標的理解遵從右左法則,從最裡面的變數名開始理解,遇到括號改變閱讀方向。*代表指標,()代表函式,代表陣列。

其中括號的優先順序最高,其次是,最後是*。比如對於int *(*(*arr[5])())()這樣的宣告來說

1、arr[5]代表乙個陣列

2、每個陣列元素是乙個指標

3、第一層指標是乙個函式指標

4、該函式的返回值是指標

5、第二層指標是函式指標

6、第二層函式指標的原型是 int * func()

C語言複雜宣告

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

C語言複雜宣告

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

複雜宣告 C語言

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