[问题] Function pointer

楼主: IhateOGC (我讨厌)   2014-08-05 21:38:04
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
gcc
问题(Question):
为何ptr 喂入function而非 function address这样也能?
#incldue <stdio.h>
typedef int (*funcp)();
int foo1(){
printf("Hello World! \n");
}
int main(){
funcp ptr;
ptr = fool;
ptr();
getchar();
return 0;
}
喂入的资料(Input):
ptr = fool;
ptr = &fool;
预期的正确结果(Expected Output):
ptr = fool; 应该compiler fail..却compiler过了
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
作者: azureblaze (AzureBlaze)   2014-08-05 21:39:00
可自动转型
作者: CaptainH (Cannon)   2014-08-05 21:57:00
不是int, 是 function
作者: suhorng ( )   2014-08-05 23:43:00
foo1 会被自动转成函数指标; #1ECoOqLM
楼主: IhateOGC (我讨厌)   2014-08-05 23:50:00
thx
作者: PUTOUCHANG (自己的废文自己发)   2014-08-05 23:51:00
可是我记得以前写 ptr = fool 执行时会 hang 住ptr = &fool 可以正确执行
作者: damody (天亮damody)   2014-08-06 00:20:00
一个是1一个是l你在笔误吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com