救救孩子???指针数组

#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 (*)()'

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

因为你有2个参数

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