我有一个简单的结构,称为条目定义,其中包含姓名和年龄。给定这些结构的数组,我想根据年龄对数组进行排序。
下面是我应用它的尝试,目前我什至无法编译它。我认为我的指针逻辑在 if 语句比较和随后的指针交换中都不正确。我尝试了各种方法来做同样的事情,但我没有得到任何地方。我对 C 很陌生,我仍在努力理解指针,所以这可能是我误解的基本内容。有人可以在下面解释我做错了什么吗?
任何帮助将不胜感激。
#include <stdio.h>
struct entry {
char name[15];
int age;
};
void entrySort( struct entry *dict);
void entrySort( struct entry *dict){
int i,j; // counters
int ct = 4;
struct entry *tmp; // temporary holder
for( i = 0; i < ct; i++){
for( j = 0; j < ct; j++ ){
if ((*dict[i].age) > (*dict[j].age)){
tmp = (dict + i);
(dict+i) = (dict+j);
(dict+j) = tmp;
}
}
}
int main (void){
int ct = 4, i;
struct entry reg[4] =
{{ "John", 24 },
{ "Alan", 18 },
{ "Jim", 40 },
{ "Sarah",32 }};
entrySort(reg);
for( i = 0; i < ct; i++)
printf("name: %s. Age: %d\n", reg[i].name, reg[i].age);
return 0;
}