为什么这两个地址是一样的?
#include <stdio.h>typedef void (callback_t)(void *);// typedef void (*callback_t)(void *); // 这两个回调函数定义有什么区别void repeat(callback_t f, void *para) { f(para); f(para); f(para);}void say_hello(void *str) { printf("Hello %s\n", (char *)str);}int main() { char a[] = "aaaaaaaaaa"; printf("%p %p\n", a, &a); callback_t *p = say_hello; repeat(say_hello, "Guys"); repeat(&say_hello, "&&&&Guys"); printf("%p %p\n", say_hello, &say_hello); repeat(p , "ppppGuys"); return 0;}/**0xbfa3fb71 0xbfa3fb71Hello GuysHello GuysHello GuysHello &&&&GuysHello &&&&GuysHello &&&&Guys0x804845d 0x804845dHello ppppGuysHello ppppGuysHello ppppGuys*///