救救孩子???指针数组

#include
int perimeter(int x,int y);
int area(int x,int y);
int solution(int x,int y,int(*ptr)());
int main()
{
int a,b;
printf(" 请输入A和B的值:");
scanf("%d%d",&a,&b);
printf(" Perimeter of a rectangle:");
solution(a,b,perimeter);
printf(" Area of a rectangle:");
solution(a,b,area);
}
int perimeter(int x,int y)
{
return (2*(x+y));
}
int area(int x,int y)
{
return x*y;
}
int solution(int x,int y,int(*ptr)())
{
int result;
result=(*ptr)(x,y);
printf("%d\n",result);
}

[Error] C:\Users\H\Documents\C-Free\Temp\未命名1.cpp:11: error: invalid conversion from int (*)(int, int)' toint (*)()'

2个回答

int solution(int x,int y,int(*ptr)());
->
int solution(int x,int y,int(*ptr)(int, int));

因为你有2个参数

weixin_45629315
YYH-ZC 好了,谢谢
9 个月之前 回复
weixin_45629315
YYH-ZC 还是不行
9 个月之前 回复

定义函数指针和定义变量一样,要注意正确的类型,函数的类型不光包括返回值,还有传入参数。
所以函数指针要写成int(*ptr)(int,int),调用的时候直接ptr(x, y)就行。

weixin_45629315
YYH-ZC 不行
9 个月之前 回复
weixin_45629315
YYH-ZC 还是
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问