何為函式指標?
即 void (*pf)();
如上宣告,即為最簡單的函式指標宣告.無返回值,無引數.
在學習c語言構建乙個adt的時候,看到過函式的指標,但是沒有真切感受到其作用.
感覺在大多數時候它是沒什麼作用的,因為仔細一想,把函式作為引數,也就是在乙個函式裡
呼叫另外乙個函式,那我何必多次一舉,直接呼叫想用的函式就完了唄.
但是,今天是感受到其作用了,那是用在氣泡排序上,作用便是隨意指揮氣泡排序,
即讓其進行公升序排列,還是降序排列.
在之前我寫過一篇關於氣泡排序的優化版,今天的這一版和函式指標相結合,可以說是很棒棒了
以下為**
#includeint bigger(int , int );
int smaller(int , int );
void bubblesort(char *, int , int (*fp)(int , int));
int main()
; bubblesort(st,10,smaller);
for(i = 0; i < 10; i++)
printf("\n");
return 0;
}void bubblesort(char *st, int length, int(*fp)(int , int))
if (i == 0&& j == length-2-i && flag==1)
} }}int bigger(int a, int b)
int smaller(int a, int b)
{ return a
還有一點就是 因為函式的位址即使函式本身,
所以還有其他使用函式指標方法,就是直接使用函式指標變數名
fp() == (*fp)(); 他們兩個是等價的.
但是有時候為了增強**的可讀性,建議統一使用(*fp)()形式, 能很清晰的看出來呼叫的是函式指標指向的這個函式.
通過氣泡排序了解函式指標
思路 1.建立乙個陣列,然後通過rand函式填充10個1 100的數,然後用輸出流迭代器ostream iterator將原始陣列元素輸出,然後進行氣泡排序,將排序完的陣列再用迭代器ostream iterator輸出。2.然後就是氣泡排序 兩重迴圈 第一層循壞是排序的趟數,第一趟取出最大或最小值,...
指標實現氣泡排序
氣泡排序的基本思想 如果要對n個數進行排序就需要進行n 1次比較,在第一輪比較中要進行n 1次兩兩比較,在第j輪中進行n j次兩兩比較 include includevoid sort int n,int p printf 排序後的陣列 n for i 0 i n i printf n int ma...
氣泡排序 與 雙向氣泡排序
public class test if k 0 break last k public static void bidirectionalbubblesort int a last k for int m last m first m first k if first last break pub...