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**是二级指针。

相关推荐
号码认证服务3 分钟前
如何让来电显示公司名代替陌生数字号码?企业号码认证开通指南
服务器·c语言·网络·经验分享·智能手机·云计算·php
计算机安禾6 分钟前
【c++面向对象编程】第19篇:多继承与菱形继承(二):虚拟继承的内存模型与复杂性
开发语言·c++
思麟呀12 分钟前
在C++基础上理解CSharp-1
开发语言·c++·c#
一念春风17 分钟前
QwenPaw(替代小龙虾)大模型
开发语言·php
小短腿的代码世界23 分钟前
Qt状态机框架深度解析:从状态图到事件驱动闭环
开发语言·qt
广州灵眸科技有限公司29 分钟前
瑞芯微(EASY EAI)RV1126B 模型部署API说明
linux·开发语言·网络·人工智能·深度学习·算法·yolo
東隅已逝,桑榆非晚30 分钟前
深⼊理解指针(5)
c语言·笔记·算法
计算机安禾32 分钟前
【c++面向对象编程】第20篇:override与final关键字:现代C++对继承的控制
开发语言·c++
AI科技星33 分钟前
全域数学:从理论到现实的终极落地全记录 光速不变公理(v=c)+ 可见派维度常数公理(D_v=3)统一广义相对论与量子力学,解决物理学百年难题
c语言·开发语言
ch.ju34 分钟前
Java程序设计(第3版)第三章——数组的定义方式
java·开发语言