按照我的理解, 就是声明了一个变量p, 类型void(*)(), 然后用&fun给它赋值, 为什么会出错呢?
void(*p)() = &fun;
这样在定义时直接赋值就不会出错.

1 hehuozhao Jul 15, 2012 我用VS2010跑了一下是正确的,如果你把void (*p)();和p = &fun;放在main()里面的话。 |
2 013231 OP @hehuozhao 问题正出在这里. C语言中, 声明可以在全局作用域进行, 但赋值不行. 所以"void(*p)() = &fun;"成功, "void (*p)();p = &fun;"失败. |
3 013231 OP |
4 xpfd Jul 16, 2012 p = &fun; 赋值语句,只能放在函数体内。 |