一个关于结构体指针交换的问题。
void sortdata(struct data *p,int len,int a[])这是从我的工程中拷贝的一段代码。 我是想实现的动作是:如果结构体数组a[i]中sum成员大于结构体数组a[i+1]中的sum成员 这实现结构体中的位置交换 最后输出的是以sum为标准的升序输出。我应该在if{}中如何写交换语句?
{
int i;
struct data *t;
t=3;
for(i=1;i<len;i++,p++)
{
if((p->sum)<((p+1)->sum))
{
t=p;
*(p+1)=*p;
p=t;
}
}
for(i=0;i<len;i++,p++)
{
printf("number:%d\t",p->number);
printf("name:%s\t",p->name);
printf("chinese:%.1f\t",p->chinese);
printf("math:%.1f\t",p->math);
printf("english:%.1f\n",p->english);
}
}
[解决办法]
你这是个排序啊,你排序算法有问题阿
[解决办法]
指针内容交换,不是指针地址交换。
看楼上的代码就行了。