C语言定义函数将循环优化掉

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

if(p2->a>p1->a)
{
temp=*p2;
*p2=*p1;
*p1=temp;
}
else if(p2->b>p1->b&&p2->a==p2->a)
{
temp=*p2;
*p2=*p1;
*p1=temp;
}
else if(p2->c>p1->c&&p2->b==p1->b&&p2->a==p2->a)
{
temp=*p2;
*p2=*p1;
*p1=temp;
}
定义一个函数,将if else 循环和交换写到一起,一行解决

p1,p2是什麽结构啊?把类型贴出来,不然函数参数没法写
if...else也不是循环啊,你是希望将三个代码块内容写一个函数吗?
大概这样吧:

typedef struct _strcu
{
     int a;
     int b;
     int c;
}strcu;
strcu a,b;
change(&a,&b);

void change(strcu *p1,strcu *p2)
{
    int flag = 0;
    if(p2->a>p1->a)
        flag = 1;
    else if(p2->b>p1->b&&p2->a==p2->a)
        flag = 1;
    else if(p2->c>p1->c&&p2->b==p1->b&&p2->a==p2->a)
        flag = 1;
    if(flag == 1)
    {
        strcu temp=*p2;
        *p2=*p1;
        *p1=temp;
    }
}