当使用函数指针时,&马克

时间:2013-11-19 23:15:04

标签: c++

使用函数指针时,有时我们会添加&在函数名之前,有时我们没有。这两者有什么区别?

void say_hi(void) {
    cout << "Hi.." << endl;
}

int main(int argc, char* argv[])
{
    void (*func)(void) = &say_hi;
    void (*func1)(void) = say_hi;
    void (*func2)(void) = *say_hi;
    void (*func3)(void) = **say_hi;
    func();
    func1();
    func2();
    func3();
    return 0;
}

以上代码的输出:

Hi..
Hi.. 
Hi..
Hi.. 

1 个答案:

答案 0 :(得分:3)

&amp;是“仍然”只是地址。然而,函数喜欢衰减到类似于衰变成“普通”指针的数组的函数指针。