为什么排序函数总是没有作用

img



int rank(st *p,int n)
{
    int max=0,i;
    for( i=0;i<n;i++)
    {
        if((p+max)->score1<(p+i)->score1)max=i;
        printf("%d %d\n",(p+max)->score1,(p+i)->score1);
    }
    printf("i=%d\n",i);
    return i;
}

如图,我的rank函数为啥if那一句没有起到作用,他不管大于还是小于,总是吧i的值赋给了max,为甚我的if语句没作用,哪里出了问题?


if((p+max)->score1<(p+i)->score1)p= p+i; 

将指向较大值的指针赋给指向较小值的指针

把代码贴全,这样看着没什么问题。