国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式

這篇具有很好參考價(jià)值的文章主要介紹了【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1、函數(shù)指針數(shù)組

1.1、函數(shù)指針數(shù)組是什么?

?1.2、函數(shù)指針數(shù)組的用途:轉(zhuǎn)移表

2、擴(kuò)展:指向函數(shù)指針的數(shù)組的指針

3、回調(diào)函數(shù)

3.1、回調(diào)函數(shù)介紹

?3.2、回調(diào)函數(shù)的案例:qsort函數(shù)

3.2.1、回顧冒泡排序

?3.2.1、什么是qsort函數(shù)?


1、函數(shù)指針數(shù)組

1.1、函數(shù)指針數(shù)組是什么?

函數(shù)指針數(shù)組是什么?首先主語是數(shù)組,數(shù)組是一個(gè)存放相同類型數(shù)據(jù)的存儲(chǔ)空間。那我們已經(jīng)學(xué)習(xí)了指針數(shù)組,比如:

char* arr[5]? ———— 字符指針數(shù)組,它是一個(gè)數(shù)組,存放的是字符指針。

int* arr[5]? ? ?———— 整型指針數(shù)組,它是一個(gè)數(shù)組,存放的是整型指針。

假設(shè)有這么一個(gè)使用場(chǎng)景,我需要將幾個(gè)函數(shù)的地址存放到一個(gè)數(shù)組中,那應(yīng)該怎么存?下面給大家介紹一下:函數(shù)指針數(shù)組

int Add(int x, int y)
{
	return x + y;
}

int Sub(int x, int y)
{
	return x - y;
}

int main()
{
	int (*pf1)(int, int) = &Add;  //pf1和pf2是函數(shù)指針
	int (*pf2)(int, int) = ⋐
	//數(shù)組中存放類型相同的多個(gè)數(shù)組
	int (*pfArr[4])(int, int) = { &Add,&Sub };  //pfArr就是函數(shù)指針數(shù)組

	return 0;
}

函數(shù)指針數(shù)組的寫法與函數(shù)指針非常相似,只需要在名字后加個(gè)方括號(hào)[ ]就可以了。

注意:因?yàn)閿?shù)組是一個(gè)存放相同類型數(shù)據(jù)的存儲(chǔ)空間,所以函數(shù)指針數(shù)組只能夠存放返回類型和參數(shù)類型都一致的函數(shù)的函數(shù)地址。

?1.2、函數(shù)指針數(shù)組的用途:轉(zhuǎn)移表

用C語言實(shí)現(xiàn)一個(gè)計(jì)算器功能(加減乘除):

int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int mul(int a, int b)
{
	return a * b;
}
int div(int a, int b)
{
	return a / b;
}

void menu()
{
	printf("*******************************\n");
	printf("******   1.add   2.sub    *****\n");
	printf("******   3.mul   4.div    *****\n");
	printf("******   0.exit           *****\n");
	printf("*******************************\n");
}

int main()
{
	int input = 0;
	int a = 0;
	int b = 0;
	int ret = 0;
	do
	{
		menu();
		printf("請(qǐng)選擇:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("請(qǐng)輸入2個(gè)操作數(shù):");
			scanf("%d %d", &a, &b);
			ret = add(a, b);
			printf("%d\n", ret);
			break;
		case 2:
			printf("請(qǐng)輸入2個(gè)操作數(shù):");
			scanf("%d %d", &a, &b);
			ret = sub(a, b);
			printf("%d\n", ret);
			break;
		case 3:
			printf("請(qǐng)輸入2個(gè)操作數(shù):");
			scanf("%d %d", &a, &b);
			ret = mul(a, b);
			printf("%d\n", ret);
			break;
		case 4:
			printf("請(qǐng)輸入2個(gè)操作數(shù):");
			scanf("%d %d", &a, &b);
			ret = div(a, b);
			printf("%d\n", ret);
			break;
		case 0:
			printf("退出計(jì)算器\n");
			break;
		default:
			printf("選擇錯(cuò)誤,重新選擇\n");
			break;
		}
	} while (input);
	return 0;
}

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式,c語言,開發(fā)語言,算法,c++,visualstudio

? ? 上面的代碼雖然能實(shí)現(xiàn)一個(gè)計(jì)算器功能,但是可以發(fā)現(xiàn),這個(gè)代碼特別地冗余,重復(fù)的部分非常多,并且如果需要添加多一個(gè)功能是,又需要再添加多一個(gè)case,導(dǎo)致代碼越來越長(zhǎng),重復(fù)部分也越來越多,這是非常不好的代碼習(xí)慣,那有什么辦法能夠解決呢?

? ? 其實(shí)我們通過觀察可以發(fā)現(xiàn),這些函數(shù)有一些特點(diǎn),就是除了函數(shù)名不同之外,返回類型以及參數(shù)類型都是一致的。

? ? 既然除了函數(shù)名不同之外其余都相同,那么是否就可以使用函數(shù)指針數(shù)組來改造一下代碼?

int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int mul(int a, int b)
{
	return a * b;
}
int div(int a, int b)
{
	return a / b;
}

void menu()
{
	printf("*******************************\n");
	printf("******   1.add   2.sub    *****\n");
	printf("******   3.mul   4.div    *****\n");
	printf("******   0.exit           *****\n");
	printf("*******************************\n");
}

int main()
{
	int input = 0;
	int a = 0;
	int b = 0;
	int ret = 0;
	do
	{
		menu();
		printf("請(qǐng)選擇:>");
		scanf("%d", &input);
		//創(chuàng)建一個(gè)函數(shù)指針數(shù)組
		int (*pfArr[])(int, int) = { NULL,add,sub,mul,div };
						    //為了使數(shù)組下標(biāo)與菜單序號(hào)對(duì)應(yīng)起來,在0下標(biāo)處放置一個(gè)NULL
		if (input == 0)
		{
			printf("退出計(jì)算器\n");
		}
		else if (input >= 1 && input <= 4)
		{
			printf("請(qǐng)輸入2個(gè)操作數(shù):");
			scanf("%d %d", &a, &b);
			ret = pfArr[input](a, b); //下標(biāo)訪問數(shù)組中的函數(shù)并調(diào)用
			printf("ret = %d\n", ret);
		}
		else
		{
			printf("選擇錯(cuò)誤,重新選擇\n");
		}
	} while (input);
	return 0;
}

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式,c語言,開發(fā)語言,算法,c++,visualstudio

可以看到,使用函數(shù)指針數(shù)組一樣可以完成。未來如果還需要添加其他功能時(shí),只需要在菜單發(fā)生變化,然后寫出實(shí)現(xiàn)功能的函數(shù),再將函數(shù)放入函數(shù)指針數(shù)組當(dāng)中就可以了。而我們把這種場(chǎng)景下使用的函數(shù)指針數(shù)組就叫做轉(zhuǎn)移表。

這也就是說:使用函數(shù)指針數(shù)組不僅大大提高了代碼的質(zhì)量,而且大大降低了維護(hù)成本。

2、擴(kuò)展:指向函數(shù)指針的數(shù)組的指針

指向函數(shù)指針數(shù)組的指針是一個(gè)指針,指針指向一個(gè)數(shù)組 ,數(shù)組的元素都是函數(shù)指針?。

如何定義?

void test(const char* str)
{
	printf("%s\n", str);
}
int main()
{
	//函數(shù)指針pfun
	void (*pfun)(const char*) = test;
	//函數(shù)指針的數(shù)組pfunArr
	void (*pfunArr[5])(const char* str);
	pfunArr[0] = test;
	//指向函數(shù)指針數(shù)組pfunArr的指針ppfunArr
	void (*(*ppfunArr)[5])(const char*) = &pfunArr;
	return 0;
}

void (*(*ppfunArr)[5])(const char*)

void (*(*ppfunArr)[5])(const char*),ppfunArr首先與*結(jié)合,所以它是一個(gè)指針。

void (*(*ppfunArr)[5])(const char*),再和[5]結(jié)合,表示指針指向一個(gè)大小為5的數(shù)組,每個(gè)數(shù)組存放的類型是函數(shù)指針void (*)(const char*)。

當(dāng)然這里講到的函數(shù)指針數(shù)組指針已經(jīng)是很深入的內(nèi)容了,使用場(chǎng)景非常少,只作為擴(kuò)展了解即可,看不懂也不需要太過于擔(dān)心。

?

3、回調(diào)函數(shù)

3.1、回調(diào)函數(shù)介紹

回調(diào)函數(shù)在C語言中的地位非常高,非常重要?;卣{(diào)函數(shù)是依賴函數(shù)指針的,有了函數(shù)指針才能實(shí)現(xiàn)回調(diào)函數(shù)。在前面計(jì)算器功能使用函數(shù)指針數(shù)組調(diào)用加減乘除函數(shù)的時(shí)候,加減乘除函數(shù)就被成為回調(diào)函數(shù)。

回調(diào)函數(shù)就是一個(gè)通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來調(diào)用其所指向的函數(shù)時(shí),我們就說這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)。

?再次用計(jì)算器功能作為例子講解:

觀察代碼可以發(fā)現(xiàn) ,只有調(diào)用函數(shù)部分不一樣,那么能不能定義一個(gè)cacl()函數(shù),通過將加減乘除函數(shù)作為參數(shù)傳入到calc函數(shù)中,達(dá)到在calc函數(shù)中調(diào)用加減乘除函數(shù)?

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式,c語言,開發(fā)語言,算法,c++,visualstudio

按照這個(gè)思路修改后的代碼:

int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int mul(int a, int b)
{
	return a * b;
}
int div(int a, int b)
{
	return a / b;
}

void menu()
{
	printf("*******************************\n");
	printf("******   1.add   2.sub    *****\n");
	printf("******   3.mul   4.div    *****\n");
	printf("******   0.exit           *****\n");
	printf("*******************************\n");
}

void calc(int(*pf)(int, int))
{
	int a = 0;
	int b = 0;
	int ret = 0;
	printf("請(qǐng)輸入2個(gè)操作數(shù):");
	scanf("%d %d", &a, &b);
	ret = pf(a, b);
	printf("%d\n", ret);
}

int main()
{
	int input = 0;
	do
	{
		menu();
		printf("請(qǐng)選擇:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			calc(add);
			break;
		case 2:
			calc(sub);
			break;
		case 3:
			calc(mul);
			break;
		case 4:
			calc(div);
			break;
		case 0:
			printf("退出計(jì)算器\n");
			break;
		default:
			printf("選擇錯(cuò)誤,重新選擇\n");
			break;
		}
	} while (input);
	return 0;
}

【圖解】

可以把calc函數(shù)理解為中轉(zhuǎn)站,給我參數(shù)傳遞什么函數(shù)地址,我就調(diào)用什么函數(shù)。

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式,c語言,開發(fā)語言,算法,c++,visualstudio

提示:往期博客中我有得出過一個(gè)結(jié)論:函數(shù)指針在調(diào)用所指向函數(shù)時(shí),可以不寫*直接和函數(shù)名一樣調(diào)用函數(shù),而*號(hào)在這里其實(shí)就只是一個(gè)擺設(shè),同樣是為了照顧初學(xué)者的使用習(xí)慣,所以才會(huì)導(dǎo)致當(dāng)加了很多*號(hào)去解引用時(shí)得出來的結(jié)果依然是正確的結(jié)果。

即(*pf)(a,b)等價(jià)于pf(a,b)。

如果想要了解更透徹,可以前往我的往期博客閱讀函數(shù)指針部分。(鏈接:點(diǎn)擊前往)

?3.2、回調(diào)函數(shù)的案例:qsort函數(shù)

3.2.1、回顧冒泡排序

?為了方便對(duì)比,我們先復(fù)習(xí)一下冒泡排序:

//冒泡排序算法
//給一組整型數(shù)據(jù),然后使用冒泡排序?qū)?shù)據(jù)進(jìn)行升序排序。

void bubble_sort(int arr[], int sz)
{
	//趟數(shù)
	int i = 0;
	for ( i = 0; i < sz - 1; i++)
	{
		//每一趟冒泡排序的過程
		int j = 0;
		for ( j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}

int main()
{
	int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	bubble_sort(arr, sz);
	int i = 0;
	for ( i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

上面就是冒泡排序的實(shí)現(xiàn),但是可以看到,這個(gè)冒泡排序其實(shí)是有缺陷的,它的參數(shù)是int類型,限制了它只能夠排序整型數(shù)據(jù)!而這里即將講到的qsort函數(shù)就是一個(gè)可以用來排序任意類型數(shù)據(jù)的函數(shù)。

?3.2.1、什么是qsort函數(shù)?

qsort是一個(gè)庫函數(shù),底層使用的是快速排序的方式對(duì)數(shù)據(jù)進(jìn)行排序。頭文件:<stdlib.h>

這個(gè)函數(shù)可以直接使用用來排序任意類型的數(shù)據(jù)。

當(dāng)然除了快速排序,還有很多排序,例如:冒泡排序、選擇排序,希爾排序,歸并排序等等

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式,c語言,開發(fā)語言,算法,c++,visualstudio

qsort函數(shù)定義原型:

void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));

  • void* base:待排序數(shù)組的第一個(gè)元素的地址
  • size_t num:待排序數(shù)組的元素個(gè)數(shù)
  • size_t size:以字節(jié)為單位,待排序數(shù)組中一個(gè)元素的大小。
  • int (*compar)(const void*,const void*):函數(shù)指針,指向一個(gè)函數(shù),用來比較兩個(gè)元素,由用戶自行創(chuàng)建并封裝。

?比較函數(shù)的形參中為什么用的是void*:

void* 是無具體類型的指針,不能進(jìn)行解引用操作符,也不能進(jìn)行+-整數(shù)的操作,它是用來存放任意類型數(shù)據(jù)的地址(可以理解為垃圾桶,什么都能裝,當(dāng)需要用時(shí)再強(qiáng)制類型轉(zhuǎn)換為需要的類型)。只有void*被允許存放任意類型數(shù)據(jù)的地址,如果是其他類型的指針編譯器會(huì)報(bào)錯(cuò)。正是因?yàn)槎xqsort函數(shù)時(shí)用的是void*,qsort函數(shù)才可以排序任意類型的數(shù)據(jù)。

使用qsort函數(shù)最重要的就是最后一個(gè)參數(shù),這個(gè)參數(shù)決定了qsort函數(shù)比較兩個(gè)元素的規(guī)則。這里先寫一個(gè)用于排序整型數(shù)據(jù)比較函數(shù)cmp_int

int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e1 - *(int*)e2;
}

?比較函數(shù)的要求:

  • 當(dāng)p1指向的元素大于p2指向的元素時(shí),返回大于0的數(shù)
  • 當(dāng)p1指向的元素等于p2指向的元素時(shí),返回0
  • 當(dāng)p1指向的元素小于p2指向的元素時(shí),返回小于0的數(shù)

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式,c語言,開發(fā)語言,算法,c++,visualstudio

?【完整代碼】

?使用qsort函數(shù)排序整型數(shù)據(jù)。

int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e1 - *(int*)e2;
}

int main()
{
	int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), cmp_int);
	int i = 0;
	for ( i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

同理,qsort函數(shù)排序結(jié)構(gòu)體類型數(shù)據(jù)(下面例子以結(jié)構(gòu)體中的年齡來排序)

struct Stu
{
	char name[20];
	int age;
};

int cmp_struct(const void* e1, const void* e2)
{
	return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
}

int main()
{
	struct Stu arr[] = { {"zhangsan",20},{"lisi",21},{"wangwu",22} };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), cmp_struct);
	return 0;
}

?【運(yùn)行結(jié)果】

可以發(fā)現(xiàn)確實(shí)是完成了按年齡排序。

【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式,c語言,開發(fā)語言,算法,c++,visualstudio


如果覺得作者寫的不錯(cuò),求給博主一個(gè)大大的點(diǎn)贊支持一下,你們的支持是我更新的最大動(dòng)力!文章來源地址http://www.zghlxwxcb.cn/news/detail-727084.html

如果覺得作者寫的不錯(cuò),求給博主一個(gè)大大的點(diǎn)贊支持一下,你們的支持是我更新的最大動(dòng)力!

如果覺得作者寫的不錯(cuò),求給博主一個(gè)大大的點(diǎn)贊支持一下,你們的支持是我更新的最大動(dòng)力!

到了這里,關(guān)于【C語言】指針的進(jìn)階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C語言】回調(diào)函數(shù)(qsort)與模擬實(shí)現(xiàn)

    【C語言】回調(diào)函數(shù)(qsort)與模擬實(shí)現(xiàn)

    何思何慮,居心當(dāng)如止水;勿取勿忘,為學(xué)當(dāng)如流水?!?出自《格言聯(lián)璧·學(xué)問類》 解釋:無思無慮,心境應(yīng)當(dāng)平靜如水;不求冒進(jìn)也不忘記,學(xué)業(yè)當(dāng)如流水一般永無止境。 這篇博客我們將會(huì)理解回調(diào)函數(shù)這個(gè)概念,以及借用qsort幫助理解,并且最終用qsort的思路來實(shí)現(xiàn)冒泡

    2024年02月16日
    瀏覽(24)
  • C語言庫函數(shù)之 qsort 講解、使用及模擬實(shí)現(xiàn)

    C語言庫函數(shù)之 qsort 講解、使用及模擬實(shí)現(xiàn)

    我們?cè)趯W(xué)習(xí)排序的時(shí)候,第一個(gè)接觸到的應(yīng)該都是冒泡排序,我們先來復(fù)習(xí)一下冒泡排序的代碼,來作為一個(gè)鋪墊和引入。 代碼如下: 很簡(jiǎn)單的一種排序方法,但我們可以發(fā)現(xiàn)一個(gè)問題,那就是冒泡排序不夠通用,它只能用于整型數(shù)組的排序,如果我要排序float類型,或者排

    2024年02月12日
    瀏覽(20)
  • 用冒泡排序?qū)崿F(xiàn)快速排序(qsort函數(shù)),指針進(jìn)階實(shí)例

    用冒泡排序?qū)崿F(xiàn)快速排序(qsort函數(shù)),指針進(jìn)階實(shí)例

    目錄 ? 1、qsort函數(shù)是什么 2、冒泡排序?qū)崿F(xiàn)指針進(jìn)階 2.1 主函數(shù) 2.2 功能函數(shù)聲明?編輯 2.3 my_qsort函數(shù)介紹 2.4 Swap函數(shù) 總結(jié) ? ? ? ? ? qsort函數(shù)是c語言自帶的函數(shù),其功能是實(shí)現(xiàn)快速排序。我們來看一下他的參數(shù)和返回值: ? ? ? ? 以上就是qsort的參數(shù)和返回值,可以看到,

    2024年02月21日
    瀏覽(25)
  • 函數(shù)指針和回調(diào)函數(shù) 以及指針函數(shù)

    函數(shù)指針(Function Pointer): 定義: 函數(shù)指針是指向函數(shù)的指針,它存儲(chǔ)了函數(shù)的地址。函數(shù)的二制制代碼存放在內(nèi)存四區(qū)中的代碼段,函數(shù)的地址它在內(nèi)存中的開始地址。如果把函數(shù)的地址作為參數(shù),就可以在函數(shù)中靈活的調(diào)用其它函數(shù)。 用途: 函數(shù)指針可以用來在運(yùn)行

    2024年01月21日
    瀏覽(25)
  • 【C進(jìn)階】回調(diào)函數(shù)(指針進(jìn)階2,詳解,小白必看)

    【C進(jìn)階】回調(diào)函數(shù)(指針進(jìn)階2,詳解,小白必看)

    目錄 6. 函數(shù)指針數(shù)組 6.1簡(jiǎn)單計(jì)算器 6.2函數(shù)指針數(shù)組實(shí)現(xiàn)計(jì)算器 7. 指向函數(shù)指針數(shù)組的指針(僅作了解即可) 8.回調(diào)函數(shù) 8.1關(guān)于回調(diào)函數(shù)的理解?編輯 8.1.1用回調(diào)函數(shù)改良簡(jiǎn)單計(jì)算器 8.2qsort庫函數(shù)的使用 8.2.1冒泡排序 8.2.2qsort的概念 8.3冒泡排序思想實(shí)現(xiàn)qsort ?????????這篇文

    2024年02月14日
    瀏覽(58)
  • 【C語言】——指針六:冒泡排序與qsort函數(shù)的實(shí)現(xiàn)

    【C語言】——指針六:冒泡排序與qsort函數(shù)的實(shí)現(xiàn)

    1.1、冒泡排序的原理 ?? ??在實(shí)踐過程中,我們難免會(huì)碰到要給一組數(shù)據(jù)排序的情況。如果我們掌握一些排序的算法,效率就會(huì)高很多。排序的方法有方法有很多,如:希爾排序,快速排序,堆排序……,今天,我們講的排序方法就是—— 冒泡排序 ! ?? ??冒泡排序

    2024年04月16日
    瀏覽(25)
  • 【進(jìn)階C語言】qsort庫函數(shù)(詳解)

    【進(jìn)階C語言】qsort庫函數(shù)(詳解)

    qsort是C語言庫函數(shù)里面的一種,包含于#include stdlib.h這個(gè)頭文件里面,使用快速排序的方法 qsort英語解析:Quick sort,翻譯就是快速排序,它的內(nèi)部實(shí)現(xiàn)是通過的快速排序算法來實(shí)現(xiàn)的。 功能:對(duì)傳入的任何數(shù)據(jù)進(jìn)行排序,使其變成有序數(shù)列。 qsort是可以排序任意類型的數(shù)據(jù)

    2024年02月02日
    瀏覽(22)
  • 『C語言進(jìn)階』qsort函數(shù)及模擬實(shí)現(xiàn)

    『C語言進(jìn)階』qsort函數(shù)及模擬實(shí)現(xiàn)

    ?? 博客主頁 : 小羊失眠啦 ?? 系列專欄 : C語言 ??? 每日語錄 : 沒有退路,只能讓自己變得強(qiáng)大 ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 在上篇指針進(jìn)階中,我們對(duì)函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組指針以及回調(diào)函數(shù)有了一定的了解,文章末尾簡(jiǎn)單的對(duì)qsort函數(shù)進(jìn)

    2024年02月07日
    瀏覽(25)
  • 【C語言進(jìn)階篇】快排函數(shù) qsort 詳細(xì)解析

    【C語言進(jìn)階篇】快排函數(shù) qsort 詳細(xì)解析

    ?? 鴿芷咕 :個(gè)人主頁 ??? 個(gè)人專欄 :《C語言初階篇》 《C語言進(jìn)階篇》 ??生活的理想,就是為了理想的生活! ?? ?? hello! 各位寶子們大家好啊,剛開始學(xué)編程的時(shí)候我們都是用冒泡來進(jìn)行排序的,今天給大家介紹一下新的排序方法庫函數(shù)qsort! ?? ?? sor英文原意是

    2024年02月14日
    瀏覽(22)
  • 【C語言】——指針五:轉(zhuǎn)移表與回調(diào)函數(shù)

    【C語言】——指針五:轉(zhuǎn)移表與回調(diào)函數(shù)

    1.1、轉(zhuǎn)移表的定義 ?? ??在之前的學(xué)習(xí)中,我們學(xué)習(xí)了 函數(shù)指針數(shù)組 (詳情請(qǐng)看【C語言】——指針?biāo)模鹤址羔樑c函數(shù)指針變量),在最后。我曾問到:函數(shù)指針數(shù)組有什么用呢?別急,本文給大家細(xì)細(xì)道來。 ?? ??函數(shù)指針數(shù)組常常被用在 轉(zhuǎn)移表 中,那轉(zhuǎn)移表是

    2024年03月26日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包