功能名称上的模糊星形运算符

时间:2014-09-16 07:55:31

标签: c++ c pointers function-pointers

只是最低限度的工作示例:

#include <stdio.h>

void foo(char* str)
{
    printf("%s\n", str);
}

main()
{
   foo("foo");
   (* foo)("* foo");
}

输出

foo
* foo

我认为函数名应该是代码段中例程的地址,因此star运算符应该返回一个可执行指令。但是这个算子在这里如何运作呢? 谢谢你放弃了一些亮光。

1 个答案:

答案 0 :(得分:0)

在C中,函数不是值,你不能&#34;取消引用函数的指针&#34;得到有意义的东西(价值)。

因此,尝试取消引用并调用这样的指针没有额外的效果,它与首先通过指针调用相同。