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修飾指標 指標指向乙個字串時 如...