Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  C语言  >  正文 C的函数声明(*(void(*)())0)()用法详解

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

发布时间:2018-10-07   编辑:www.jquerycn.cn
jquery中文网为您提供C的函数声明(*(void(*)())0)()用法详解等资源,欢迎您收藏本站,我们将为您提供最新的C的函数声明(*(void(*)())0)()用法详解资源
在看一些优秀开源项目的时候,总是能看到各种指针,各种函数的用法,我对这方面的理解还是很晦涩,今天就抽空恶补一下,

 

翻了翻《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 (*)())的函数指针而已。。

您可能感兴趣的文章:
C的函数声明(*(void(*)())0)()用法详解
C语言中函数 与 指针学习笔记
C语言函数形参 和 空的下标运算符[]
PHP函数类型声明总结
C语言中变量定义/声明深入分析
gcc编译C程序出现”error conflicting types for function”编译错误的分析解决
PHP7.1和7.2 新增功能详解
C#简介- 类和对象,选自《C#编程语言详解》,送给新手
C#泛型编程实例详解
C 函数

[关闭]