函式指標的初始化及呼叫

2021-08-31 01:29:14 字數 491 閱讀 2606

以前只知道函式指標怎麼使用,但是細節就不太了解,這裡總結下

和其他指標一樣,函式指標執行間接訪問之前必須把它初始化為指向某個函式。

函式名被使用時總是由編譯器把它轉換為函式指標。

#includeint fun(int a)

int main(void)

一.直接使用fun名呼叫,函式名fun首先被轉換為乙個函式指標,指標確定函式在記憶體中的位置。然後函式呼叫操作符呼叫該函式,執行開始於這個位址的**。

二.對pf執行間接訪問操作,把函式指標轉換為乙個函式名。這樣轉換並不是真正需要的,因為編譯器在執行函式呼叫操作符之前又會把它轉換回去,這條語句效果等同於第一條。

三.第三條語句等同於前二條。

編譯結果:

在《c和指標》p261頁有更詳細的內容。

初始化指標

includeusing namespace std int main nullptr 是 c 新標準引入的特性,visual c 2010 編譯器支援它。過去已經使用0或 null 編譯器將用 0代替此巨集 來初始化指標,當然它們現在仍然可以使用。但是,使用 nullptr 初始化指標要好得多。因...

指標的初始化

指標代表的是記憶體單元的編號或位址,通過指標就可以找到對應的記憶體單元。對指標進行初始化或賦值的實質是將乙個位址或同型別 或相相容的型別 的指標賦給它,而不管這個位址是怎麼取得的。1 指標的初始化 指標初始化時,的右運算元必須為記憶體中資料的位址,不可以是變數,也不可以直接用整型位址值 但是int ...

指標的初始化

下面的函式有什麼錯誤 int square volatile int ptr 這段 的目的是用來返指標 ptr指向值的平方,但是,由 於 ptr指向乙個volatile型引數,編譯器將產生類似下面的 int square volatile int ptr 由於 ptr的值可能被意想不到地該變,因此a...