前言:推荐一个 在线编译网站,编译不同语言同步可以看到汇编语言 Compiler Explorer

    可以看到func_1的普通变量 a 和func_2中的函数指针 func_ptr 在底层是一样的

    1. typedef void(*func_ptr)();
    2. void func_1()
    3. {
    4. long a=0;
    5. }
    6. void func_2()
    7. {
    8. func_ptr func =0;
    9. }
    1. func_1():
    2. push rbp
    3. mov rbp, rsp
    4. mov QWORD PTR [rbp-8], 0
    5. nop
    6. pop rbp
    7. ret
    8. func_2():
    9. push rbp
    10. mov rbp, rsp
    11. mov QWORD PTR [rbp-8], 0
    12. nop
    13. pop rbp
    14. ret