读书人

为何这两个地址是一样的

发布时间: 2012-11-08 08:48:11 作者: rapoo

为什么这两个地址是一样的?

C/C++ code
#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*///


a 跟 &a ,
say_hello 跟 &say_hello
地址为什么一样的?
还有:
typedef void (callback_t)(void *);
typedef void (*callback_t)(void *); // 这两个回调函数定义有什么区别


[解决办法]
探讨
a 跟 &a ,
say_hello 跟 &say_hello
地址为什么一样的?
还有:
typedef void (callback_t)(void *);
typedef void (*callback_t)(void *); // 这两个回调函数定义有什么区别

读书人网 >C语言

热点推荐