给函数指针赋值时,可以用&fun(函数)或直接用函数名fun.因为函数名被编译之后其实就是一个地址,所以这里没有本质的区别.可以直接用函数名,可以用函数名加上去地址符.
(*(void(*)())0)():
1.void(*)(),可以明白这是一个函数指针类型,这个函数没有参数,没有返回值.
2.(void(*)())0,这是将0强制转换为函数指针类型,0是一个地址,,也就是说一个函数保存在首地址为0的一段区域内.
3.(*(void(*)())0)这是取0地址开始的一段内存里面的内容,其内容就是保存在首地址为0的一段区域内的函数.
4.(*(void(*)())0)()这是函数调用.
阅读(627) | 评论(0) | 转发(0) |