需要并返回指针的函数指针

时间:2018-11-04 06:52:38

标签: c pointers

我正在尝试运行此代码。

#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; 

有人可以解释错误/问题吗?谢谢!

3 个答案:

答案 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;
}