永发信息网

C语言函数指针问题

答案:2  悬赏:80  手机版
解决时间 2021-06-07 10:13
  • 提问者网友:半生酒醒
  • 2021-06-06 23:13

调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:

⑴ 2个数的和;

⑵ 2个数交换值。

要求用函数指针调用这两个函数,结果在主函数中输出。

我编写的程序是:

#include <stdio.h>
int sum (int x, int y,int c) ;
int swap (int m,int n);
void main()
{int a,b,c,(*p)(),(*s)();
scanf("%d,%d",&a,&b);
p=sum;
c=(*p)(a,b);
s=swap;
swap(a,b);
printf("sum=%d\n",c);
printf("a=%d,b=%d\n",s(a),s(b));
}
sum(int x, int y,int c)
{
c=x+y;
return c;
}
swap(int m, int n)
{ int t;
t=m;m=n;n=t;
}

程序运行结果

怎么a输出的是3?求指教~~

最佳答案
  • 五星知识达人网友:神也偏爱
  • 2021-06-06 23:29
(*p)(),(*s)()里面都要加上要调用的函数的参数,类型与个数都一样才可以
全部回答
  • 1楼网友:由着我着迷
  • 2021-06-06 23:35
#include <stdio.h> int sum (int x, int y) ; void swap (int *m,int *n); void main() {int a,b,c,(*p)(int, int); void (*s)(int*, int*); scanf("%d,%d",&a,&b); p=sum; c=(*p)(a,b); s=swap; swap(&a,&b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } int sum(int x, int y) { int c; c=x+y; return c; } void swap(int *m, int *n) { int t; t=*m;*m=*n;*n=t; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯