我正在尝试运行此代码。
#include <stdio.h>
int *myMethod(int *a)
{
printf("Hello");
return a;
}
int main()
{
// my_ptr is a pointer to function myMethod()
int *my_ptr(int *) = myMethod;
// Invoking myMethod() using my_ptr
int a = 5;
int *p = (*my_ptr)(&a);
printf("Bye %d\n", *p);
return 0;
}
我认为函数指针my_ptr的语法是正确的,它可以将int指针作为参数并返回一个int指针,但是当我编译它时,出现以下错误:
error: function 'my_ptr' is initialized like a variable
int *my_ptr(int *) = myMethod;
有人可以解释错误/问题吗?谢谢!
答案 0 :(得分:1)
int* my_ptr(int*)
是函数的原型。您需要一个函数指针:int* (*my_ptr)(int*)
答案 1 :(得分:1)
将函数myMethod的指针更改为此:
int *(*my_ptr)(int *) = &myMethod;
答案 2 :(得分:0)
您应该使用int *(*my_ptr)(int *) = myMethod;
而不是int *my_ptr(int *) = myMethod;
以下code
可以工作:
#include <stdio.h>
int *myMethod(int *a)
{
printf("Hello");
return a;
}
int main()
{
int *(*my_ptr)(int *) = myMethod;
int a = 5;
int *p = (*my_ptr)(&a);
printf("Bye %d\n", *p);
return 0;
}