在C語言中實現泛型程式設計

2021-09-13 17:58:19 字數 2543 閱讀 1061

注意:返回值為void並不是沒有返回值,而是代表返回空型別,這就是你仍然可以在這些函式中使用return語句的原因。只有一些語言的建構函式和析構函式才沒有返回值,在這些函式中,不可以使用return語句,他們是有顯著的不同的,objective-c是一門獨特的語言,它的類的初始化方法是乙個普通方法,返回值是instancetype(當前類的指標型別)型別。
我沒有考證過16位的8086機器上指標的大小,因為8086的位址是20位的,這個有興趣的話可以回去試一試。

個人認為指標的大小仍然是16位,因為20位是實體地址,而實體地址是由段位址和偏移位址計算出的,在彙編之後c語言的指標可能只是變成相對於段位址的偏移位址,畢竟對於8086而言資料一般總是在ds段中,而**一般總是在cs段中。(斜體字代表尚未考證的說法)

void swap(void *array, int x, int y, int mallocsize)
int a = *(array + mallocsize * x);
void * memcpy(void *, const void *, size_t);
#ifndef compare_h

#define compare_h

#include #include "jcb.h"

int isgreater(void *x, void *y);

int isgreaterorequal(void *x, void *y);

int issmaller(void *x, void *y);

int issmallerorequal(void *x, void *y);

#endif /* compare_h */

//

// compare.c

// job-dispatcher

//// created by 路偉饒 on 2017/11/16.

//#include "compare.h"

int isgreater(void *x, void *y)

int isgreaterorequal(void *x, void *y)

int issmaller(void *x, void *y)

int issmallerorequal(void *x, void *y)

//

// quicksort.h

// job-dispatcher

//// created by 路偉饒 on 2017/11/16.

//#ifndef quicksort_h

#define quicksort_h

#include #include #include #include "compare.h"

void quicksort(void *array, int left, int right, int mallocsize);

#endif /* quicksort_h */

//

// quicksort.c

// job-dispatcher

//// created by 路偉饒 on 2017/11/16.

//#include "quicksort.h"

void swap(void *array, int x, int y, int mallocsize)

int quicksortselectcenter(int l, int r)

int quicksortpartition(void *array, int l, int r, int mallocsize)

if (left < right)

while ( isgreaterorequal(array+mallocsize*right, temp) && left < right)

if (left < right)

}memcpy(array+mallocsize*left, temp, mallocsize);

return left;

}void quicksort(void *array, int left, int right, int mallocsize)

int center = quicksortselectcenter(left, right);

swap(array, center, right, mallocsize);

center = quicksortpartition(array, left, right, mallocsize);

quicksort(array, left, center-1, mallocsize);

quicksort(array, center+1, right, mallocsize);

}

C語言實現泛型程式設計

泛型程式設計讓你編寫完全一般化並可重複使用的演算法,其效率與針對某特定資料型別而設計的演算法相同。在c語言中,可以通過一些手段實現這樣的泛型程式設計。這裡介紹一種方法 通過無型別指標void 看下面的乙個實現交換兩個元素內容的函式swap,以整型int為例 void swap int i1,int ...

C語言泛型程式設計 泛型氣泡排序

在實際程式設計中,常常會需要一些方法 函式 比如排序,它們具體實現基本一致,僅僅只有引數型別不同,那麼可不可以有一種通用的函式,不管是什麼型別的引數都可以通用呢?泛型程式設計 泛型即是指具有在多種資料型別上皆可操作的含義,與模板有些相似。利用泛型程式設計,我們可以寫一些通用的函式,以減少 量,實現 ...

C語言泛型程式設計 泛型氣泡排序

在實際程式設計中,常常會需要一些方法 函式 比如排序,它們具體實現基本一致,僅僅只有引數型別不同,那麼可不可以有一種通用的函式,不管是什麼型別的引數都可以通用呢?泛型程式設計 泛型即是指具有在多種資料型別上皆可操作的含義,與模板有些相似。利用泛型程式設計,我們可以寫一些通用的函式,以減少 量,實現 ...