在c/c++語言中,函式本身不是變數,但可以定義指向函式的指標。這種型別的指標可以被賦值、存放在陣列中、傳遞給函式以及作為函式的返回值等等。由於指向函式的指標還是實踐的比較多,書中是以改寫快速排序為例子的,現在呢,我們就來編寫乙個線性排序。
1int lsearch(void *key, void *base, int n, int elementsize, int(*cmpfn)(void *, void *))210
}11return -1
;12 }
接下來,先做乙個在int陣列中查詢元素,**如下:
1int array = ;
2int size = 9;3
int number = 5;4
int index = lsearch(&number, array, size, sizeof(int
), intcmp);
5 printf("
%d", index);
因為intcmp是乙個函式指標,其指向的是乙個返回int且有2個void *引數的函式,實現如下:
1int intcmp(void *p1, void *p2)
2
以上我們就是先了int版本的查詢,接著我們來實現字串型別的查詢。
1char *arr = ;
2char *s = "aa"
;3int size = 4;4
int index = lsearch(&s, arr, size, sizeof(char *), strcmp);
5 printf("
%d", index);
我們不能將這個函式指標定義為strcmp是因為庫裡面已經有這個函式了,且庫裡面的strcmp的2個引數是char *的,不匹配。strcmp的實現如下:
1int strcmp(void *p1, void *p2)
2
到此,今天的學習就結束了,明天繼續,加油!
C C 學習 9 C C 優化排序
說明 常見的排序演算法都是比較排序,非比較排序包括計數排序 桶排序和基數排序,非比較排序對資料有要求,因為資料本身包含了定位特徵,所有才能不通過比較來確定元素的位置。比較排序的時間複雜度通常為o n2 或者o nlogn 比較排序的時間複雜度下界就是o nlogn 而非比較排序的時間複雜度可以達到o...
學習筆記9
函式 函式以def開頭,後面接函式名和括號,然後接冒號 函式的最後接return結束函式,並返回乙個值,可以沒有,就相當於返回none 函式呼叫時直接用函式名加括號 括號內為需要傳入的引數。傳入函式的引數是實參 在函式內使用的大多都為形參 形參只能在函式內使用,函式結束後就自動釋放記憶體了。函式中的...
學習筆記9
今天來進行系統的學習一下css 層疊樣式表 首先說一下層疊次序,四個優先權 1.瀏覽器預設設定 2.外部樣式表 3內部樣式表 位於 內部樣式表 內聯樣式 this is a paragraph 多重樣式 例 h1居中對齊 h1 h1 css的使用 背景 background color backgr...