yizhancs 发表于 2021-3-11 16:07:41

指针函数

#include <stdio.h>
int max(int, int);
int min(int, int);
int add(int, int);
int main()
{
        void process(int, int, int(*fun)(int, int));
        int a, b;
        printf("请输入a与b的值:\n");
        scanf("%d %d", &a, &b);
        printf("max = \n");
        process(a, b, max);
        printf("min = \n");
        process(a, b, min);
        printf("add = \n");
        process(a, b, add);
}
int max(int a, int b)
{
        int z;
        if (a > b)
                z = a;
        else
                z = b;
        return z;
}
int min(int a, int b)
{
        int z;
        if (a > b)
                z = b;
        else
                z = a;
        return z;
}
int add(int a, int b)
{
        int z;
        z = a + b;
        return z;
}
用VS2017编译时出现错误:
error LNK2019: 无法解析的外部符号 "void __cdecl process(int,int,int (__cdecl*)(int,int))" (?process@@YAXHHP6AHHH@Z@Z),该符号在函数 _main 中被引用
fatal error LNK1120: 1 个无法解析的外部命令


yuxijian2020 发表于 2021-3-11 16:46:47

全局声明,不要在main函数中声明

jackz007 发表于 2021-3-11 17:00:07

本帖最后由 jackz007 于 2021-3-11 17:02 编辑

      少了 process() 的函数定义
#include <stdio.h>

int max(int a, int b)
{
      int z;
      if (a > b)
                z = a;
      else
                z = b;
      return z;
}

int min(int a, int b)
{
      int z;
      if (a > b)
                z = b;
      else
                z = a;
      return z;
}

int add(int a, int b)
{
      int z;
      z = a + b;
      return z;
}

int process(int a , int b , int(* fun)(int , int))    // 少了这个函数定义,注意,这个函数的返回类型要和 max()、min()、add() 的一致,不可以是 void
{
      return fun(a , b) ;
}

int main()
{
      int a , b                                 ;
      printf("请输入a与b的值: ")                  ;
      scanf("%d%d" , & a , & b)                   ;
      printf("max = %d\n" , process(a , b , max)) ;
      printf("min = %d\n" , process(a , b , min)) ;
      printf("add = %d\n" , process(a , b , add)) ;
}
      编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c

D:\0002.Exercise\C>x
请输入a与b的值: 9 99
max = 99
min = 9
add = 108

D:\0002.Exercise\C>

yizhancs 发表于 2021-3-11 17:05:32

jackz007 发表于 2021-3-11 17:00
少了 process() 的函数定义

      编译、运行实况:

好的,已经解决了,谢谢

yizhancs 发表于 2021-3-11 17:06:02

yuxijian2020 发表于 2021-3-11 16:46
全局声明,不要在main函数中声明

谢谢解答

心驰神往 发表于 2021-3-12 11:36:23

yizhancs 发表于 2021-3-11 17:05
好的,已经解决了,谢谢

解决的话请及时设置最佳答案
页: [1]
查看完整版本: 指针函数