指针 这个 语句哪里不对

img


第一题

#include<stdio.h>
void rela(intp,intq);
void main()
{ int p1,p2,a,b;
scanf("%d%d",&a,&b);
p1=&a;p2=&b;
void rela(int
p1,int
p2);
}
void rela(intp1,intp2)
{
if(*p1<*p2)
printf("%d<%d\n",*p1,*p2);
else if(*p1==*p2)
printf("%d=%d\n",*p1,*p2);
else printf("%d>%d\n",*p1,*p2);
}

点运行后输入数字,但是没有结果。

修改处见注释,供参考:

#include<stdio.h>
void rela(int* p,int* q);
void main()
{
    int *p1,*p2,a,b;
    scanf("%d%d",&a,&b);
    p1=&a;p2=&b;
    rela(p1,p2);  //修改
    //void rela(intp1,intp2);
   
}
void rela(int *p1,int *p2)
{
    if(*p1<*p2)
       printf("%d<%d\n",*p1,*p2);
    else if(*p1==*p2)
       printf("%d=%d\n",*p1,*p2);
    else
       printf("%d>%d\n",*p1,*p2);
}

改正在代码注释中


#include<stdio.h>
void rela(intp, intq);
void main()
{
    int *p1, *p2, a, b;  //将p1、p2定义为指针要加*
    scanf("%d %d", &a, &b);
    p1 = &a; p2 = &b;
    rela(p1, p2);  //调用函数只需写函数名+参数
}
void rela(int* p1, int* p2)   //传入的是变量地址,函数参数定义为指针类型
{
    if (*p1 < *p2)
        printf("%d<%d\n", *p1, *p2);
    else if (*p1 == *p2)
        printf("%d=%d\n", *p1, *p2);
    else 
        printf("%d>%d\n", *p1, *p2);
}