qsort包含在 stdlib.h標頭檔案中,此函式根據你給的比較條件進行快速排序,通過指標移動實現排序。排序之後的結果仍然放在原陣列中。使用qsort函式必須自己寫乙個比較函式。
qsort函式宣告如下:
void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *));base,要排序的陣列引數說明:
nmemb,陣列中元素的數目
size,每個陣列元素占用的記憶體空間,可使用sizeof函式獲得
compar,指向函式的指標也即函式指標。這個函式用來比較兩個陣列元素,第乙個引數大於,等於,小於第二個引數時,分別顯示正值,零,負值。
乙個典型的qsort的寫法如下:
void qsort(s,n,sizeof(s[0]),cmp);
#include#include#include#includevoid main(void)
; char b[10]=;
double c[10]=;
int cmp1(const void * a,const void * b)
int cmp2(const void * a,const void *b)
int c***(const void * a,const void * b)
qsort(a,10,sizeof(int),&cmp1);//對於函式指標(指向函式的指標),直接傳入函式名和函式名進行&
//運算都是可以的,因為在呼叫函式時也是取的函式的位址
qsort(b,10,sizeof(char),cmp2);
qsort(c,10,sizeof(double),c***);
for(i=0;i<10;i++)
printf("%d ",a[i]);
for(i=0;i<10;i++)
printf("%c ",b[i]);
for(i=0;i<10;i++)
printf("%lf ",c[i]);
}
C 複製建構函式不能用 explicit 修飾
最近在寫的乙個 出現個莫名其妙的編譯問題。可以簡化成這樣 class foo explicit foo foo a private int m a int main 這個 編譯時總是提示 foo b x 這一行有問題。報的錯誤還很詭異。用 vs2015 報錯如下。error c2440 初始化 無法...
AS別名 「不能用在CASE中,只能顯示結果時用」
1 正確 sql select cntry name,cntry continent as continent,case 注意 case用的字段 是表的真正欄位名 cntry continent 不是別名 continent 哦,親 when cntry continent is null then...
為什麼VUE註冊元件命名時不能用大寫的?
這段時間一直在弄vue,當然也遇到很多問題,這裡就來跟大家分享一些註冊自定義模板元件的心得 首先 vue註冊元件命名時不能用大寫 其實這句話是不對的,但我們很多人開始都覺得是對的,因為大家都踩過大寫命名的坑 下面我們來看個例子 當我看完官網的文件後,信心滿滿的第一次準備自定義元件時,就寫的跟上面差不...