提示不存在从 " " 到 " *" 的适当转换函数,应该怎么解决?

图片说明
#include
typedef struct
{
char xing[15];
int sheng;
char ma[20];

}ren;
void Change( ren * a, ren * b)
{
ren cl;
cl = *a;
*a = *b;
*b = cl;
}
int main()
{
int a, b, d, e;
ren c[20];
scanf("%d", &a);
for (b = 0; b < a; b++)
{

    scanf("%s", c[b].xing);
    scanf("%d", &c[b].sheng);
    scanf("%s", c[b].ma);

}
/*3
    zhang 19850403 13912345678
    wang 19821020 + 86 - 0571 - 88018448
    qian 19840619 13609876543*/
/*for (b = a-1; b < a; b++)
{

    printf("%s", c[b].xing);
    printf("%d", c[b].sheng);
    printf("%s", c[b].ma);
    printf("\n");
}*/
e = c[0].sheng;
for (b = 0; b < a - 1; b++)
{
    for (d = 0; d < a-b-1; d++)
    {
        if (c[d].sheng > c[d + 1].sheng)
        {
            Change(c[d], c[d + 1]);
        }
    }
}
for (b = 0; b < a; b++)
{
    printf("%s ", c[b].xing);
    printf("%d ", c[b].sheng);
    printf("%s\n", c[b].ma);
}
return 0;

}

1个回答

Change(c[d], c[d + 1])改为Change(&c[d], &c[d + 1]);

weixin_43675246
weixin_43675246 回复weixin_43911149: 因为void Change( ren * a, ren * b)函数需要传指针,也就是地址。但你Change(c[d], c[d + 1])这样调用就只传了变量给它,所以加&,获取变量地址,传地址就对了。感谢采纳,有问题再问
9 个月之前 回复
weixin_43911149
weixin_43911149 好的好的,对了,谢谢!另外,能问下这是为什么吗
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!