為了滿足dry思想,減少**的重複性,考慮將函式作為引數傳入另一函式中。c語言是可以將函式作為函式引數的。
用到的方法是函式指標。
首先需要明確的是, 在c語言中,函式名就是函式的首位址,所以將函式作為函式引數的思路是將函式位址傳入,形參是乙個指標型別的變數,形參的基型別為函式原型。
引數原型為:
elemtype(*functionname)(elemtype, elemtype, ......)
其中:elemtype
為宣告(如int, float, double,struct等)
以氣泡排序為例借助判斷大小函式進行陣列排序的具體實現方法如下:
#include
#define yes 1
#define no 0
///*判斷函式,進行元素大小判斷,increase判斷大小比較*/
intcompare
(int a,
int b,
int increase)
else
}/*氣泡排序進行陣列排序*/
void
orderarr
(int arry,
int(
*compare)
(int
,int
,int),
int length,
int increase =1)
}}}/*輸出函式*/
void
print
(int a,
int length)
printf
("\n");
}int
main()
;//增序排列陣列
orderarr
(a, compare,5)
;print
(a,5);
//降序排列陣列
orderarr
(a, compare,5,
-1);
print
(a,5);
}
指標作為函式引數,C語言指標作為函式引數詳解
include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...
C語言陣列作為函式引數
一 陣列元素作為函式的實參 陣列元素就是變數,與普通變數沒有區別,將陣列元素傳送給形參,實現單向的值傳遞。include float max float x,float y int main int m a 0 for int i 1 i 6 i printf 陣列中的最大元素是 d m 二 陣列名...
C語言指標變數作為函式引數
有讀者反饋,不理解字元陣列和普通陣列的區別,下面筆者作一下解答。實際上,字元陣列和普通陣列一樣,沒有本質區別。請大家注意陣列型別的含義 資料型別指的是陣列所包含的元素的型別,而不是陣列名的型別,陣列名永遠是乙個指標,指向第乙個元素的位址,即陣列首位址。字元陣列的每個元素都是char型別,整型陣列的每...