C語言學習(六)指標4 指向函式的指標

2021-06-13 04:07:19 字數 1367 閱讀 6768

1.乙個函式在編譯時被分配乙個入口位址。這個函式的入口位址就稱為函式的指標。可以用乙個指標變數指向函式,然後通過該指標變數呼叫此函式。

例如:比較2個數字,返回大的數字:

void main()

int swap(int a,int b)

說明: a)

指向函式的指標變數的定義形式為:

返回型別(*指標變數名)(引數列表);b)

在乙個程式中,乙個指標變數可以先後指向同型別的不同函式。

c)在給指標函式賦值的時候只需要函式名。

d)函式指標++,--

運算無意義。

2.函式指標變數通常的用途之一是把指標作為引數傳遞到其他函式中。

簡述如下:有乙個函式sub

,它有兩個引數x1,x2

。定義x1

和x2為指向函式的指標變數。在呼叫函式sub

時,實參為兩個函式f1

和f2,

給形參傳遞的是f1

和f2的位址。這樣在函式中就可以呼叫f1

和f2函式了。

實參函式名   f1                   f2

void sub(int (* x1) (int),int (* x2) (int int))

應用場景:如果每次在呼叫sub

函式時,要呼叫的函式不是固定的,這次呼叫f1

和f2,而下次要呼叫f3

和f4。這時只要在每次呼叫sub

函式時給出不同的函式名作為實參即可,sub

函式不必做任何修改。這種方法符合結構化程式設計方法原則,在程式設計中經常使用。

例如:設計乙個函式,輸入a

和b,第一次呼叫輸出大的數,第二次呼叫輸出小的數,第三次呼叫輸出兩個數的和。

void main()

int max(int a,int b)

int min(int a,int b)

int add(int a,int b)

int process(int a,int b,int (*p)(int,int))

輸出:

maxis 8

minis 5

addis 13 

C語言學習4 指標

int a 10 int p a 一級指標 int s p 二級指標 int p 10 指向陣列的指標 int s 10 指標指向放指標的陣列 這個陣列有十個空間 int p 10 開闢10個空間 每個空間放指標 例如 int br 10 int s 10 br int ar 10 int p 10...

C語言學習(六)指標5 返回指標的函式

1.型別名 函式名 引數列表 例如 int max int x,int y max是函式名,呼叫這個函式得到乙個指向整形資料的指標。注意在 max 兩側沒有括號。運算子高於 運算子,因此 max先與 結合,再與 結合。2.例子,有若干學生成績,每個學生有 4門課程。輸入乙個序列號,能輸出該學生的全部...

C語言學習(三) 指標

指標的定義int p char p float p指標變數所佔記憶體的大小 跟前面定義的型別無關 而跟系統有關 16bits作業系統 2b 32bits作業系統 4b 64bits作業系統 8b 指標指向乙個值所在的第乙個位元組 通常乙個位址存放乙個位元組 const修飾指標 指標指向乙個字串時 如...