icecocotea 发表于 2020-6-10 01:33:45

C程序报错求助

本人小白,照着小甲鱼的课程写了一个用指针比较大小的程序,代码如下

#include <stdio.h>

void main()
{
        void swap(int *p1, int *p2);
        int a, b;
        int *pa, *pb;
        printf("please input two numbers:\n");
        scanf("%d %d", &a, &b);
        pa=&a;
        pb=&b;
        if(a<b)
        {
                swap(int *pa, int *pb);
        }

        printf("%d > %d\n", a, b);
}

void swap(int *p1, int *p2)
{
        int temp;
        printf("in course of swapping, please wait!\n");
        temp=*p1;
        *p1=*p2;
        *p2=temp;
}

为什么编译的时候总是出现如下错误?

: error C2143: syntax error : missing ')' before 'type'
: error C2198: 'swap' : too few actual
: error C2059: syntax error : ')' parameters
执行 cl.exe 时出错.

- 1 error(s), 0 warning(s)

谢谢各位

qiuyouzhi 发表于 2020-6-10 07:24:23

swap调用那里,直接写swap(pa, pb)

小甲鱼的铁粉 发表于 2020-6-10 07:24:26

楼主,把a和b的值传入函数时不需要pa和pb的,还有 swap(int *pa, int *pb);在语法上是不需要这两个int的,正确的如下
#include <stdio.h>

int main()
{
      void swap(int *p1, int *p2);
      int a, b;
      int *pa, *pb;
      printf("please input two numbers:\n");
      scanf("%d %d", &a, &b);
      pa=&a;
      pb=&b;
      if(a<b)
      {
                swap(&a,&b);
      }

      printf("%d > %d\n", a, b);
      return 0;
}

void swap(int *p1, int *p2)
{
      int temp;
      printf("in course of swapping, please wait!\n");
      temp=*p1;
      *p1=*p2;
      *p2=temp;
}

小甲鱼的铁粉 发表于 2020-6-10 07:25:44

或者是使用指针pa和pb将值传入函数
#include <stdio.h>

int main()
{
      void swap(int *p1, int *p2);
      int a, b;
      int *pa, *pb;
      printf("please input two numbers:\n");
      scanf("%d %d", &a, &b);
      pa=&a;
      pb=&b;
      if(a<b)
      {
                swap(&(*pa),&(*pb));
      }

      printf("%d > %d\n", a, b);
      return 0;
}

void swap(int *p1, int *p2)
{
      int temp;
      printf("in course of swapping, please wait!\n");
      temp=*p1;
      *p1=*p2;
      *p2=temp;
}

小甲鱼的铁粉 发表于 2020-6-10 07:26:19

在传入函数时,一定要用到取地址符

chxchxkkk 发表于 2020-6-10 09:27:24

int *pa, *pb; 这两个指针变量多余。pa = &a, pb = &b,也是多余的。
#include <stdio.h>

void main()
{
      void swap(int *p1, int *p2);
      int a, b;      
      printf("please input two numbers:\n");
      scanf("%d %d", &a, &b);      
      if(a<b)
      {
                swap( &a, &b);
      }

      printf("%d > %d\n", a, b);
}

void swap(int *p1, int *p2)
{
      int temp;
      printf("in course of swapping, please wait!\n");
      temp=*p1;
      *p1=*p2;
      *p2=temp;
}

icecocotea 发表于 2020-6-11 01:54:19

谢谢大家,问题已解决
页: [1]
查看完整版本: C程序报错求助