当前位置: 首页 > news >正文

c语言中“qsort函数”和“结构体成员访问变量”

qsort函数:

qsort是c语言中的库函数,这个函数是对数据进行排序(对任意)

冒泡排序中排列整数顺序用的函数只适用于整形,而qsort函数适用与所有数据

排序算法

冒泡排序

插入

选择

快速

void qsort{

   void * base;   //base指向的排序数组的第一个元素的指针

   size_t num;     //base指向数组中元素的个数

   size_t size;     //base指向数组中一个元素的大小,单位是字节

   int (*cmp)(const void*,const void*);

};

排列浮点型数组字符串结构体:不同的是两个元素之间的比较方式不同

  两个字符串的比较大小不能使用> ,>=, <, <=, !=, ==,应该有strcmp

  strcmp函数不是比较字符串的长度,而是对应字符所占字节的大小。

//先测试qsort来排序整形

void test1(){

    int arr[] = {1 2 4 6 7 8 9 43 }

    int  sz=sizeof(arr) / sizeof(arr[0]);

    qsort (arr , sz , sizeof(arr[0]) , cmp_int);

    print_arr();

}

对函数返回值有要求,比较两个p1,p2的整型

int cmp_int(const void*p1,const void *p2){

return *(int*)p1 - *(int*)p2;      //直接比较两个整数的大小了

}

比较两个结构体:

张三      李四

20          35

185        170    是比较年龄还是身高呢?

qsort给了一个函数指针,来比较结构体。

//用test2来排序结构体数据

Struct Stu{

char name[20];    //名字是字符串

int age;                //字符串比较用strcmp函数

}

//按照名字来比较

p1强制类型转换,才可以用。需要包含头文件#include<string.h>

void  test2(){

    struct Stu arr[]={{"zhangsan ",20},{"lisi",35},{"wangwu",18};

    int sz=sizeof(arr)/sizeof(arr[0]);

    qsort(arr , sz , sizeof(arr[0]) , com_stu_by_name);

}

int cmp_stu_by_name(const void *p1,const void *p2){

     return  strcmp(((struct stu*)p1->name,((struct stu*)p2)->name);

}

//按照年龄进行访问

void  test3(){

    struct Stu arr[]={{"zhangsan ",20},{"lisi",35},{"wangwu",18};

    int sz=sizeof(arr)/sizeof(arr[0]);

    qsort(arr , sz , sizeof(arr[0]) , com_stu_by_age);

}

int cmp_stu_by_age(const void *p1,const void *p2){

     return  strcmp(((struct stu*)p1->age,((struct stu*)p2)->age);

}

结构体成员访问变量

struct Stu{

char name[20];

int age;

}

int main(){

struct Stu s={"zhangsan",20};

printf("%s %d\n",s.name,s.age);          

struct Stu *s=&s;                                        //  结构体成员访问操作符:

printf("%s %d\n",(*ps).name,(*ps).age);     // . :结构体变量 成员名

pritnf("%s %d\n",ps->name,ps->age);       //->: 结构体指针->成员名

return 0;

}

http://www.lryc.cn/news/443296.html

相关文章:

  • 【MySQL】在MySQL中STR_TO_DATE()
  • PCIE集成验证(五)MSI/MSI-X中断
  • leetcode 380.O(1) 时间插入、删除和获取随机元素
  • 基于MicroPython的ESP8266控制PS2摇杆模块的设计方案
  • Spring Boot 3项目使用Swagger3教程
  • linux-系统备份与恢复-系统恢复
  • 【Rust语言】std::collections::HashMap用法
  • 使用SoapUI、Postman工具调用Webservice方法
  • js 与 C++引用和指针的关系
  • python --PyAibote自动化
  • Ubuntu系统开发环境搭建
  • lvs-dr模式实验详解
  • 【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具
  • 跨站请求伪造(CSRF)漏洞详解
  • Java+Spring Cloud +UniApp 智慧工地源码,用户PC端、移动端数据同步,支持多端展示
  • 【推广】图书|2024新书《大模型RAG实战:RAG原理、应用与系统构建》汪鹏、谷清水、卞龙鹏等,机械工业出版社
  • 在Unity UI中实现UILineRenderer组件绘制线条
  • C语言中union的用法
  • C++速通LeetCode中等第18题-删除链表的倒数第N个结点(最简单含注释)
  • 鸿蒙 WebView 设置 Header
  • 电力施工作业安全行为检测图像数据集
  • 大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)
  • 【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结
  • Qt圆角窗口
  • 研究生第一次刷力扣day1
  • flink自定义process,使用状态求历史总和(scala)
  • 股指期货理论价格计算公式是什么?
  • 解决R包依赖版本不兼容问题
  • HarmonyOS开发者基础认证考试试题
  • 如何使用 React、TypeScript、TailwindCSS 和 Vite 创建 Chrome 插件