【学习笔记】((Void (*)())Exec)()的理解

在理解之前,首先回忆一下函数指针的声明和调用。(C语言函数指针

1
2
3
4
5
6
7
8
9
10
// 声明一个函数指针
void (*p)();

// 将函数Func的入口地址赋值给指针p
p = Func;

// 调用函数指针有两种方式
p(); // 简易写法

(*p)(); //标准写法

接着再回忆一下强制类型转换。(C语言数据类型转换

1
2
3
4
5
// 声明一个float类型的变量
float f = 3.141592;

// 将变量f强制转换为int类型
(int)f;

最后在来看看我们的((void (*)())exec)()试着拆分一下,捋一捋他的执行过程

1
2
3
4
5
6
7
8
// 声明一个void类型的函数指针
void (*)();

// 强制类型转换(将exec强制转换为void类型的指针)
(.....)exec;

// 调用函数指针
(.......)();

现在我们再回过头来看((void (*)())exec)();是不是和(*exec)();一样,这不就是一个函数指针的调用吗?

交个朋友
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

吹吹牛吗?

微信