定義乙個函式process來有效結合這三個函式,通過指向函式的指標來完成這個步驟
指向函式的指標用如下格式來定義指標型別 (*指標變數名)()--->int(*p)()
這個指標的型別適合指標指向的函式的返回值型別保持一致的,例如max
函式的返回值型別是int
,因此指向max
函式的指標的型別也是int
在呼叫process
函式的時候,想用哪個函式來處理資料,就把目標函式的位址付給函式指標p
即可;如下例所示。
之所以能夠直接用指標指向函式,是因為 c 的**執行的過程中,函式也會被載入記憶體從而開闢一塊記憶體空間,函式開始的語句的位址就是函式的位址,因此,可以用指標直接指向函式。
#include
intmax
(int x,
int y)
intmin
(int x,
int y)
intadd
(int x,
int y)
intprocess
(int x,
int y,
int(
*p)())
else
if(p==min)
else
return result;
}void
main()
用乙個例項來進行展示:
#define _crt_secure_no_warnings
#include
int*
search_student
(int
(*array)[4
],int index)
void
main()
,,};
int a;
printf
("請輸入您想要查詢的學生的序號:\n\n");
scanf
("%d"
,&a)
;int
*student_scores =
search_student
(array, a)
;printf
("第%d 個學生的成績是:\n\n%d %d %d %d"
C語言學習筆記之指向陣列元素的指標和指向陣列的指標
現有如下 執行結果為 通過這個例子,我個人的理解是 雖然列印陣列a和 a結果是相同的位址值,但所代表的意義是不同的。陣列名a代表陣列第乙個元素的位址,指標p和陣列名a其實是指向陣列元素的指標。指標pa是指向陣列a這個整體的指標,p和pa是不一樣的。也就是說p i是按照陣列元素的大小向前移動i,而pa...
C語言學習筆記 指向指標的指標 多級指標
在指向指標的指標這一塊,從大一開c語言課的時候就沒弄明白,現在快畢業了,重新拾起c語言,多少是明白了一點 在這塊的介紹上,文字描述太難懂太繞了,咱直接上例子,看 debug一下,看看記憶體和位址的分配情況就差不多能明白了 例項程式 程式輸出 the value of myvar is 12.the ...
C語言 指向函式的指標
1 函式型別 函式指標變數 指向函式的入口位址 乙個函式是若干語句的集合 經編譯後儲存在函式 儲存區 並占有一片連續的儲存空間 對函式指標只能用函式名賦值而無其他運算 include stdio.h 23 intmax intx inty 45 intmain 617 18int max intx ...