函数指针的有无括号问题
z=(*(int(*)(int,int)a)(x,y);//等价于z=(*void(*())0)();
如上需要注意几个关键点:
1,0地址当作了函数的开始位置;
2,()表示指针,并且函数指针加括号是调用;
3,而void(())表示函数,参数为NULL;
4,(void(())0)中类型加括号代表强转;
5,对于最后的()实际上代表无函数;
函数指针的有无括号问题
z=(*(int(*)(int,int)a)(x,y);//等价于z=(*void(*())0)();
如上需要注意几个关键点:
1,0地址当作了函数的开始位置;
2,()表示指针,并且函数指针加括号是调用;
3,而void(())表示函数,参数为NULL;
4,(void(())0)中类型加括号代表强转;
5,对于最后的()实际上代表无函数;