函数指针

参考:https://zhuanlan.zhihu.com/p/22437704
在C语言中,函数名就是表示函数的首地址,函数指针就是指向函数首地址的指针。

1. 函数地址的获取

因为函数地址就是bit数等于int的数据而已,所以有多种方法可以取得函数地址

  1. 指向int 的指针(int *)
int * p_function = (int *)print_something;

其语句完整的写法应该为:

int * p_function  = (int *) &print_something;

编译器处理时遇到函数的名字会自动取其地址,所以&取地址符可以省略。

  1. int
int function_address = (int)print_something;

注意:这个编译器会有警告,可以运行,但是不推荐使用

  1. void *(万能指针)
void * p = print_something;

print_something省略了取地址符,这个是获取一个函数的首地址,并把它赋值给万能指针。

2. 如何根据函数的地址访问函数


```cpp
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

/** @note 定义类型函数指针,方便指针转换 */
typedef void ( * void_function_type)(void); //print_something类型的函数

void print_something(void)
{
   
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值