一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

C的函数声明(*(void(*)())0)()用法详解

时间:2022-06-25 04:55:53 编辑:袖梨 来源:一聚教程网

 

翻了翻《c语言陷阱与缺陷》,下面就简单做一下总结:

先来看看一个声明:

(*(void(*)())0)();

只能用变态来形容了,下面就来一步一步剖析:

最简单的变量声明方式:

int a;//声明一个类型为int型的变量

最简单的函数声明方式

int fn();//声明 fn函数返回的结果类型是int型

最简单的指针声明方式:

int *p=0;//声明一个指向int型的指针p,初始化为0.

返回指针的函数:

int *a();

最简单的函数指针声明方式:
int (*h)();

h是一个函数指针,如果要强制转换类型,该怎么办?

其实很容易 。

简单的类型转换:
 
void *p=10;
printf("%dn",(int*)p);

那函数指针也是一样的,

比如,如果要把某个函数 强制转换为 int(*h)()类型的函数指针该怎么办?

只需要这样 (int (*)())(表达式)就可以了。。。

那如果要声明一个 (int (*)())类型的指针函数怎么办?

第一步 声明一个 函数指针

int (*a)();

只需要把(int (*)())作为一个类型强制转换a就可以了
(*(int (*)())a)()

它其实是一个 类型为 (int (*)())的函数指针而已。。

热门栏目