函数指针在 C 中返回某种类型的指针

Function pointer returning a pointer of some type in C

我无法解决下面这段代码。

当我编译包含以下这段代码的整个文件时,我看到一个警告(如下所示),我看不到它是否已从整个 *.c 文件中排除。

代码:

int * ( * get_ptr1)(int) = (int* )0x234456;
printf("The address of the func_ptr is %x\n", get_ptr1);

警告信息:

Initialization from incompatible pointer type

任何人都可以解释一下为什么我会看到这个警告以及上面代码中需要更正的地方。我正在使用 C99 标准编译器。

如果我的标题不是很具体,请多多包涵。

int *int *(*)(int) 是不同的类型。你可以这样写:

int *(*get_ptr1)(int) = (int *(*)(int))0x234456;

printf 函数指针没有格式说明符。您对 %x 的使用会导致未定义的行为。 See this thread 一些想法。