Uso de la función qsort

1. La forma de la función qsort

1.1 Utilice la biblioteca incluida con la función qsort

1.2 Parámetros de la función qsort

qsort: Ordena los elementos de una matriz

1.3 Función de comparación en parámetros 

struct stu
{
	char name[20];//姓名
	int age;//年龄
	double grade;//成绩
};
int cmp_name(void* p1, void* p2)
{
	//如果按照姓名排序
	return strcmp(((struct stu*)p1)->name, ((struct stu*)p2)->name);
}
int cmp_age(void* p1, void* p2)
{
	//如果按照年龄排序
	return ((int*)p1 - (int*)p2);
}
int cmp_grade(void* p1, void* p2)
{
	//如果按照成绩排序
	return (int)((double*)p1 - (double*)p2);
}

2. Uso de la función qsort

Por la forma de la función qsort, no es difícil ver que qsort puede realizar la clasificación que necesitamos en función de la función de comparación que le pasamos.

struct stu
{
	char name[20];//姓名
	int age;//年龄
	double grade;//成绩
};
int cmp_name(void* p1, void* p2)
{
	//如果按照姓名排序
	return strcmp(((struct stu*)p1)->name, ((struct stu*)p2)->name);
}
int cmp_age(void* p1, void* p2)
{
	//如果按照年龄排序
	return ((int*)p1 - (int*)p2);
}
int cmp_grade(void* p1, void* p2)
{
	//如果按照成绩排序
	return (int)((double*)p1 - (double*)p2);
}


int main()
{
	struct stu s1 = { "zhangsan",14,89.5 };
	struct stu s2 = { "lisi",17,94.0 };
	struct stu s3 = { "wangwu",45,66.5 };
	struct stu arr[] = { s1,s2, s3 };

	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), cmp_name);
//需要排序的数组   //每个数组元素的大小
          //排序的数组中的元素数     排序所遵循的compar函数名     



	return 0;
}

Desde la depuración podemos ver que qsort ha ordenado la matriz. 

 3. puntero vacío *

Los punteros de tipo void* no se pueden utilizar para operadores de desreferenciación, ni tampoco para operaciones de enteros +-.

Se utiliza un puntero de tipo void* para almacenar la dirección de cualquier tipo de datos.

vacío* Puntero sin tipo concreto

Puedes usar un puntero void* para recibir cualquier tipo de puntero. Si necesitas desreferenciar un puntero void*, puedes convertirlo.

Supongo que te gusta

Origin blog.csdn.net/m0_75186846/article/details/132773094
Recomendado
Clasificación