以下两种类型定义有什么区别?
1. typedef char * (*fnptr)( void );
2. typedef char * fnptr( void );
一个是指向函数的指针的类型,另一个是函数的类型。对于名为fn_name的函数,fn_name和& fn_name都是指向函数的指针(第一条指令的地址)。这是对的吗?
使用2我可以在我的代码中替换以下行:
char *getsome( void );
由:
fnptr getsome;
以上述方式使用1会导致程序崩溃。如果我使用1,那么我必须定义一个类型为fnptr的变量g并将其设置为等于getsome以使程序再次运行。