sort函数c语言结构体 sort语句c语言( 六 )


变量名是选择项, 可以不命名, 这样规定是为了排列需要 。
例如: 下面定义了一个位结构 。
struct{
unsigned incon: 8;
/*incon占用低字节的0~7共8位*/
unsigned txcolor:
4;/*txcolor占用高字节的0~3位共4位*/
unsigned bgcolor:
3;/*bgcolor占用高字节的4~6位共3位*/
unsigned blink: 1;/*blink占用高字节的第7位*/
}ch;
位结构成员的访问与结构成员的访问相同 。
例如: 访问上例位结构中的bgcolor成员可写成:
ch.bgcolor
注意:
1. 位结构中的成员可以定义为unsigned, 也可定义为signed,但当成员长
度为1时, 会被认为是unsigned类型 。因为单个位不可能具有符号 。
2. 位结构中的成员不能使用数组和指针, 但位结构变量可以是数组和指针,
如果是指针, 其成员访问方式同结构指针 。
3. 位结构总长度(位数), 是各个位成员定义的位数之和,可以超过两个字
节 。
4. 位结构成员可以与其它结构成员一起使用 。
例如:
struct info{
char name[8];
int age;
struct addr address;
float pay;
unsigned state: 1;
unsigned pay: 1;
}workers;’
上例的结构定义了关于一个工从的信息 。其中有两个位结构成员, 每个位结
构成员只有一位, 因此只占一个字节但保存了两个信息, 该字节中第一位表示工
人的状态, 第二位表示工资是否已发放 。由此可见使用位结构可以节省存贮空间 。
C语言中结构体数据排序设结构体名为AAAsort函数c语言结构体,结构体数组声明为struct AAA a[N];(N为宏定义常量)sort函数c语言结构体 , 身份证成员名为idsort函数c语言结构体,则排序函数可如下写——
#include "stdio.h"
#include string.h
#define N 3
struct AAA{
char id[20];
int age;
};
void mysort(struct AAA *p){//排序函数
struct AAA t;
int i,j,k;
for(i=0;iN;i++){
for(k=i,j=k+1;jN;j++)
if(strcmp((p+j)-id,(p+k)-id)0)
k=j;
if(i!=k)
t=*(p+k),*(p+k)=*(p+i),*(p+i)=t;
}
}
int main(int argc,char *argv[]){//测试主函数
struct AAA a[N]={{"650104194812109907",77},{"333018201801015555",1},{"650104194812109903",80}};
mysort(a);
printf("%s\t%d\n",a[0].id,a[0].age);
printf("%s\t%d\n",a[1].id,a[1].age);
printf("%s\t%d\n",a[2].id,a[2].age);
return 0;
}
运行结果:
sort函数能对结构体进行排序吗?std::sort()函数sort函数c语言结构体的功能很强大sort函数c语言结构体,且可以对类sort函数c语言结构体,结构体等元素进行排序 。
首先来看看std中的快速排序算法sort的使用方法:
template class RandomAccessIterator, class Compare void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
这是一个带模板的函数,参数1和2表示需要排序的元素在随机迭代器的起始位置和结束位置,其迭代器指向的数据类型可以自己定义,常见的数据类型包括结构体,vector,类等都可以被使用 。参数comp是用来决定所采用的排序是升序还是逆序的 , 默认情况下是升序排列 。但是这种默认情况的优势是处理迭代器指向的元素为普通的数据类型,比如说整型,字符型等 。如果指向的数据类型为类或者结构体 , 然后使用该类或者结构体中的某个元素进行排序,这时候需要自己定义排序的重载符号”” 。比如说在本次实验中该重载符号的定义为:
/*按照降序排列*/
bool compare(const PAIR x, const PAIR y)
{
return x.point_valuey.point_value;
}
如果将comp定义为一个函数(网上好像很多都是用这种类似的函数),比如说该函数如下:

推荐阅读