900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言函数指针指向函数怎么写 C语言函数指针和指向函数的指针

C语言函数指针指向函数怎么写 C语言函数指针和指向函数的指针

时间:2022-10-24 18:54:10

相关推荐

C语言函数指针指向函数怎么写 C语言函数指针和指向函数的指针

返回指针值的函数

1 返回值为指针型数据的函数,定义一般的形式为:

类型名 *函数名(参数表)

例如:int* func(int x, int y);

解释:表示func的返回值为指向int型数据的指针。

注意点:函数名前的*只表示范围值为指针型数据

*func两侧没有括号。

返回指针值的函数的例子与调试呢,我就不写了,因为我觉得这个还是非常简单的了。我重点写下面的知识点,指向函数的指针。

指向函数的指针

为什么会存在指向函数的指针:因为啊!函数作为一段程序,在内存中也要占据一片存储区域呢!它就会有一个起始地址,即函数的入口地址,这个就好像世界地图,每个国家对就像世界地图上的1块空间,如果从1个固定的地方往1个方向看,每个国家都会有1个地方是离你最近的,这个最近的地方就好比函数的入口地址,也就是它的起始地址啦!这个地址我们就叫它函数的指针。

指向函数的指针有什么作用啊:这样一来啊,我们就可以定义一个指针变量指向函数,然后通过指针调用函数。将函数作为参数在函数间传递。

使用指向函数的指针会给程序带来什么好处啊?:我暂时还不知道,继续往下学,说不定就知道啦!

既然函数有1个入口,那么函数有多少个出口啊?出口就看return啦!有多少个return就有多少个出口哦!

指向函数的指针变量定义:类型名 (* 指针变量名) ();

指向函数的指针的更深入一层去理解:因为编译器会把函数翻译出所对于的机器代码,那么这个机器代码的第一个字节的地址就是函数的 首地址,也就是指向函数的指针。

间接调用与直接调用:通过函数指针来调用函数叫间接调用,通过函数名来调用叫直接调用。

例子:

int (*p)()

表示:p是一个指向函数的指针变量,此函数的返回值为int型。

代码事例:

大家看了这段代码是不是发现了1个问题啊p和Max并不相等啊,这个是为什么啊?!当然只有加油去搜寻资料了!。。。。。。10分钟后!原来是这样的,大家看这个:

哦!我们明白啦!在401005这里有个jmp跳转。原来函数指针被归纳在一个跳表里去啦!但是这个只是在debug方式下会这样做哦!

我们再来看一段代码:

#include

<

stdio.h

>

int

Max(

int

x,

int

y){

return

x

>

y

?

x:y;}

void

main(){

int

a;

int

(

*

p)(

int

)

=

NULL; p

=

(

int

(

*

)(

int

))Max;//其中int(*)(int)这段呢!是一个数据类型,表示一个单参函数的指针,作用是把1个

双参函数的地址强制说成是1个单参函数的地址。 a

=

((

int

(

*

)(

int

,

int

))p)(

2

,

9

);//然后我们调用时候不行啊,因为参数不对,所以又要转换回来!}

哇!函数指针的类型转换好郁闷啊!但是我必须要学懂!以后肯定会遇到的!

注意:由于这类指针变量等于一个函数的入口地址,所以它们做加减运算是无意义的。(嘿嘿!这句话又像谭老师!虽然我没有看过他的书!但是我觉得呢!这些结论只是我暂时的理解!以后可能会有新的认识的!加油!!!)

逻辑与算法分离

大家看:这样一来我们的算法和逻辑分开啦!这样的话,我们想换算法,换参数就可以啦!我们把算法给参数化了!

这一节笔记就写到这里了!大家一起加油!学习知识,让生活更美好!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。