C语言qsort函数

排序qsort

  1. int
c 复制代码
int cmp(const void *a, const void *b)
{
	return *(int *)a - *(int *)b;//先强转成int型,后解引用取值比较大小
}
  1. 字符串数组 char a\[\] = "hello world" //字符串数组,存放的是字符
c 复制代码
int cmp(const void *a, const void *b)
{
	return *(char*)a - *(char *)b;//实质是转化成ascii值比较;
}
  1. 字符串指针数组排序 char *b\[\] = { "hello" , "world"};字符串指针数组,存放的是指针即元素地址,指针指向其中的元素
c 复制代码
int cmp(const void *a, const void *b)
{
	return strcmp(*(char **)a, *(char**)b);
  1. 结构体排序
c 复制代码
struct Stu
{
	int age;
	char name[20];
};
//比较结构体中元素的年龄
int cmp_age(const void* e1, const void* e2)
{
	//本质是比较整形
	return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
}
//比较名字
int cmp_name(const void* e1, const void* e2)
{
	//本质是字符串比较->使用strcmp函数
	return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
}

补充字符串

  1. 字符串定义:
c 复制代码
char *str1 = {"Hello world!"};  // 方式一 (可省略{})
char str2[] = {"Hello world!"}; // 方式二 (可省略{})
char str3[] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\0'}; // 方式三
char str4[16] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\0'}; // 方式四
  1. 字符串指针数组
c 复制代码
char* parr[] ={"good head","strength body","smooth foot"} ;

那么数组首元素是char* 类型的,char*类型的地址就是char**是二级指针。

相关推荐
Ai-_Man9 分钟前
您您这可以把Dola的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。用AI导出鸭,答案是可以的
开发语言·前端·人工智能·小程序
Java后端的Ai之路11 分钟前
Python进阶探索23 - Python中的Time与Datetime模块
开发语言·数据库·python·datetime·time
沫璃染墨32 分钟前
《从零入门Linux系统篇(五十四):线程篇·七——互斥锁底层原理:从原子交换到线程竞争与锁实现》
linux·运维·服务器·开发语言·c++·驱动开发·系统架构
Java后端的Ai之路1 小时前
Python进阶探索24_应用案例_linux系统的监控
linux·开发语言·python·应用·探索
晓蛋1 小时前
C语言条件编译精讲
c语言·条件编译·宏定义·代码移植·预处理程序
程序员清风1 小时前
PydanticAI 实战:用类型安全构建可靠的 Python Agent
开发语言·python·安全
落魄实习生1 小时前
Agent Scope Java 2.x 系列【10】Middleware
java·开发语言·ai
Ramble_Naylor2 小时前
async/await:让一个线程同时等很多件事
开发语言·rust
ggaofeng2 小时前
Ctrl+C结束进程是如何实现的
服务器·c语言·网络
迅猛龙办公室2 小时前
Python实现绘制同切圆
开发语言·python