初识操作系统以及关于qsort()

操作系统的功能:

1 操作系统接口

2 CPU管理

3 内存管理

4 设备管理

5 文件管理

操作系统的设计采用分层结构,越是上层,越接近用户

操作系统=内核+系统程序

系统程序=编译环境+API+AUI

编译环境=编译程序+连接程序+装载程序

Linux内核是单内核结构,即把内核作为一个大整体来实现,而各模块之间可以直接调用相关函数

延迟执行机制----下半部分,软中断,Tasklet,工作队列等

 

 

qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。

函数原型:

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

函数一共四个参数,没返回值。一个典型的qsort的写法如下:

void qsort(s,n,sizeof(s[0]),cmp);

其中第一个参数是参与排序的数组名(或者也可以理解成开始排序的地址,因为可以写&s[i],这个问题下面有说明);第二个参数是参与排序的元素个数; 第三个参数是单个元素的大小(推荐使用sizeof(s[0])这样的表达式,下面也有说明);第四个参数就是很多人觉得非常困惑的比较函数,关于这个函数,还要说的比较麻烦...

下面来讨论cmp这个比较函数(写成cmp是我的个人喜好,你可以随便写成什么,比如qcmp什么的)。典型的cmp的定义是:

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

返回值必须是int,两个参数的类型必须都是const void *,那个a,b是我随便写的两个参数。 假设是对int排序的话,如果是升序,那么就是如果a比b大返回一个正值,小则负值,相等返回0,后面有例子来说明对不同的类型如何进行排序。

在函数体内要对a,b进行强制类型转换后才能得到正确的返回值,不同的类型有不同的处理方法。

 

posted @ 2013-07-24 14:43  herry_tu  阅读(233)  评论(0编辑  收藏  举报