c语言指针报错:taking pointer from integer without a cast

此为学校online judge的题目,源代码如下

#include<stdio.h>
void swap(int *p1,int *p2){
    int i;
    i = *p1;
    *p1 = *p2;
    *p2 = i;
}


int main()
{
    int a,b,r1,r2;
    while(~scanf("%d%d%d%d",&a,&b,&r1,&r2)){
        if(a<b) swap(a,b);
        if(r1<r2) swap(r1,r2);
        if(2*r1>b||2*r2>b||(b-(r1+r2))<0||(a-(r1+r2))<0)
        {
            printf("NO\n");
        }
        else
        {
            int t1=b-(r1+r2),t2=a-(r1+r2);
            if(t1*t1+t2*t2>=(r1+r2)*(r1+r2))
                printf("YES\n");
            else printf("NO\n");
        }
    }
    return 0;
}

首先ide内会有如下warning:
图片描述

然后在oj提交答案后会有如下报错:
图片描述

但是Ide跑这段代码是没有erros的
百度上的答案都看不懂,所以小白在这里想请教一下各位!

阅读 3.9k
1 个回答

整数不能隐式转换成指针,应该为swap(&a, &b)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进