C语言学习之函数指针

什么是函数指针呢
我们在编写程序的时候,往往需要自定义某个函数实现某个功能,在编译时系统就会为这个函数代码分配一段存储空间,而这段存储空间的首地址就是这个函数的地址。而函数名就是代表着函数的地址。因此,存放函数地址的指针变量成为函数指针变量,简称函数指针。

函数指针的定义方式为:
函数返回值类型 (*指针变量名)(函数参数列表);
举个例子:

int(*p)(int, int);

这个代码表示,这里定义了一个指针变量p,该指针指向的是一个返回类型为int型的函数,并且该函数有两个int型的参数变量。指针变量p类型为int(* )(int ,int)。
这里需要注意的是,*p两端的括号不能去掉,因为括号改变了运算符的优先级。

又是指针变量又是函数指针的,好烦,应该怎么区分呢?
看到变量定义时,先看看这个变量前有没有*号,如果有就是指针变量(函数指针也是指针变量),那我们怎么再进一步区分是普通变量指针还是函数指针呢?我们要知道函数需要参数列表,我们观察变量名后面有无带有形参类型的括号,如果有就是函数指针,没有就是普通的变量指针。

需要注意的是:函数指针没有指针变量++和--运算。

那我们怎么使用函数指针调用函数呢?

举个例子

int Func(int x);    // 先声明一个函数
int (*p)(int);      // 函数指针的定义
p = Func;           // 将函数Func的首地址赋值给指针变量p‘


int b = x;        // 定义一个int型的变量
int a = (*p)(b);   // a用于接收函数调用的返回值

上面的代码就实现了利用函数指针实现了Func函数的调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>