qsort函式 不能用c STL時使用)

2021-08-25 02:43:04 字數 1114 閱讀 2368

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註冊元件命名時不能用大寫 其實這句話是不對的,但我們很多人開始都覺得是對的,因為大家都踩過大寫命名的坑 下面我們來看個例子 當我看完官網的文件後,信心滿滿的第一次準備自定義元件時,就寫的跟上面差不...