[bo][un]死了都要C[/un] 在 2008-8-30 11:44 的发言:[/bo]
19楼的程序虽然看不懂``
但是是建议不要用VOID MAIN
好吧,问题既然是我提出的,我有必要给任何不明白这个问题的人一个解答。
在定规范的时候,大家发现对函数指针变量的使用时,到底是否需要写dereference符号呢,即“数据”和“地址”这个概念上存在模糊和歧义。对于普通的指针,我们的使用非常明确。比如说
int *p; //声明时,'*'表示p是指向Int类型的一个指针。同理可以理解加**或者更多星号的含义。
*p++;
//这时候必须写dereference符号,表示我们对我们指向的数据进行操作。
p++;//这表示我们对指针进行移动。
但函数指针的时候存在这样的模糊:
void (*f)();
我们调用它的时候应该怎么写呢:
如果把f当成指针,应该写成
(*f)();
但是f本身就是地址,所以这样写:
f();
看起来也合理。
上面两种习惯的人都有,所以编译器和标准接受了这种使用上的模糊,即写*和不写*都通过。
因此对于f来说,前面加不加*,f和*f都是它本身的值。因此加再多的*和只写一个*,以及不写*,都没有区别。
[[it] 本帖最后由 hoodlum1980 于 2008-8-30 12:50 编辑 [/it]]