函式指標的讀法

2021-06-04 00:25:57 字數 614 閱讀 3578

指標的概念在c裡面非常重要,而對於函式指標的理解更有利於掌握程式執行的過程。

對於以下宣告 

(char*)(*f)(int*,float)

要從(*f)開始讀,*f表明f為乙個指標,而(*f)(int*,float*)表明f是乙個函式指標,這個函式有2個引數,分別位int*和float。最後我們知道它是乙個返回值為char*和引數為int*和float的函式。

另外需要明確的是,這是乙個變數的宣告,而不是乙個型別的。也就是說,你可以給f賦值,而不能用它來宣告變數。

假設有函式宣告

char* fun(int* x, float y)

你可以用

f = fun;

將f賦值為這個函式,此時相當於f指向了fun函式在**段的起始位址,然後你就可以呼叫了

int m = 2;

float n = 3.1;

char * result = f(&m,n);

同時,*f兩邊的括號是必須的,否則宣告就變成了

(char*)*f(int*,float)

它會被解讀為

(char**)f(int*,float)

這是乙個函式原型,引數為int*和float,返回值為char**

複雜指標讀法

c inta 乙個整形 int a 乙個指標,批向乙個整形 整形指標 int a 乙個函式,反回乙個整形指標 int a 10 乙個陣列,裡面存放著整形指標 int a 乙個指標,指向乙個函式,該函式返回整形 int a 乙個指標,指向乙個陣列,陣列裡放著整形 int a 乙個整形 int a 乙個...

指標巢狀讀法

作者寫的很不錯!有種豁然開朗的感覺,不再死記硬背了。c語言所有複雜的指標宣告,都是由各種宣告巢狀構成的。如何解讀複雜指標宣告呢?右左法則是乙個既著名又常用的方法。不過,右左法則其實並不是c標準裡面的內容,它是從c標準的宣告規定中歸納出來的方法。c標準的宣告規則,是用來解決如何建立宣告的,而右左法則是...

C 指標使用const限定符以及指標讀法

其實在教材中也說了,使用const限定符可以強制改變訪問的許可權。const指標表示指標本身是乙個常量。由於指標是物件,因此就像其他物件一樣,允許把指標本身定為常量。cosnt指標必須初始化,並且一旦初始化,const指標的值就不能改變了。const指標的值到底是什麼?其實就是存放在指標中的位址,這...