筆記 C 函式指標與表示式複雜的指標理解

2021-10-04 13:17:23 字數 1083 閱讀 9397

int

(*vptr)

(int

,int

)= max;

格式是這樣的,表示vptr這個指標指向 int max(int,int);的函式。

int

max(

int a,

int b)

intmain()

c語言中對於符號的定義,從名字開始,然後根據符號的先後順序來解釋定義。以下先後順序從高到低:

定義中被括號( )括起來的那部分。

字尾操作符:括號( )表示這是乙個函式,方括號[ ]表示這是乙個陣列。

字首操作符:星號*表示「指向***的指標」。

1)int* p1[6]

這樣寫比較好理解,也能寫成int *p1[6],先後順序,先讀p1[6],代表這是乙個陣列,陣列中包含6個int*型別。

2)int (*p2)[6]

先讀*p2,代表p2是個指標,再往外讀,指向int[6]的陣列。

3)int (*p3)(int ,int )

先讀*p3,代表p3是個指標指向 int func(int,int)函式。

4)char *(* c[10])(int **p);

先讀括號裡頭*c[10],c[10]的優先順序高,代表c[10]是個指標陣列,再往外,讀(*c[10])(int **p),說明這個指標陣列指向的是乙個函式func(int **p),這個函式返回型別是char*。

5)int (*(*(*pfunc)(int *))[5])(int *);

先讀括號裡的*(*(*pfunc)(int *))[5],繼續分解讀*(*pfunc)(int *),可知pfunc是個指向函式的指標,函式返回值為指標。往外看,*(*(*pfunc)(int*))(int*))[5],可知這個pfunc指向的函式返回的指標,指向乙個*[5]指標陣列,這個陣列裡頭的指標指向int func(int *)函式。

C語言筆記 指標表示式

字尾 操作符的優先順序高於 操作符,這兩個操作符的結合性是從右向左的。1 cp 表示式的計算分3個步驟,1 操作符產生cp的乙份拷貝 2 操作符將cp的值加1,使cp指向下乙個記憶體位置 3 最後,在cp的拷貝上執行間接訪問操作。所以該表示式返回的結果仍然是cp指向的內容,並讓cp指向下乙個記憶體位...

C 學習筆記 表示式 語句 函式

這三節的內容特別多但是比較基礎,所以我把他們放在了一起,把一些比較重要 個人認為的 的一些知識點記錄下來,以便以後查閱。c 新標準規定商一律先0取整 即直接切除小數部分 對於除法和取模的運算規則 相等與布林值的碰撞 只有當 val 等於 1 時才成立,因為布林值true轉換成 val 的型別 if ...

4 複雜表示式和指標高階應用

指標陣列的實質是乙個陣列,這個陣列中儲存的內容全部是指標變數 數值指標的實質是乙個指標,這個指標指向乙個陣列 第一步 找核心,首先要搞清楚定義的符號時誰 第二步 找結合,看誰跟核心最近,誰跟核心結合 第三步,繼續向外找結合,直到符號完 int p 5 p是乙個陣列,陣列中的5個元素都是指標,指標指向...