函数指针与函数指针数组 1. 函数指针 函数指针:指向函数的指针,存放函数地址的指针。 &func_name 取到的就是函数的地址; 直接用 func_name 也可以得到函数的地址; 如何定义一个函数指针变量呢? 这里的Add是一个函数名,函数接收两个int型的参数,函数的返回类型也是int. 因此函数指针变量定义应该是: (*) ( , , …)= &; 定义和使用的例子: (*fp2)(5, 4) 和 fp2(5, 4) 都可以调用函数,这说明那颗星是一个摆设! 题目1:如何对下面的代码进行解析? 可以看做是对函数指针p进行声明的语法,这里p的类型就是 ,所以 就是对 0 进行强制类型转换,把他转换成一个函数指针! 是对函数指针进行解引用,因此这段代码的作用就是调用0地址处的函数:该函数无参数,返回类型是 void。 因此上述语句其实是一个函数调用语句,应用场景如下:
出自《C陷阱与缺陷》 题目2: 如何对下面的代码进行解析? 首先从 入手,他首先和 进行结合,说明他是一个函数; 函数有两个参数,参数1是 型的,参数2是 型的,也就是函数指针型的; 函数名,函数参数都确定了,拿掉这部分,剩下的就是函数返回值类型,剩下了什么呢?是: ,可见 函数的返回类型是一个函数指针。 因此上述语句其实就是对 函数进行声明的语句。 自己实现了一个这样的 函数: 注意,上述 函数的声明如果这样写是不被允许的: 但是有没有更好的写法呢?当然是有的: 这样,上述代码就可以简化成: 2. 函数指针数组 函数指针数组里面可以存放同类型的函数指针 这里 的声明也可以这样: 还可以这样: 3. 指向函数指针数组的指针 指向函数指针数组的指针是一个 ,指针指向一个 ,数组的素都是 . 总结, 如果一个指针parr指向了一个数组arr,那么这个指针可以以这种方式进行声明:在等号左边,把声明arr的代码拷贝过来,用(*parr)来对该声明中的arr进行字符串替换;等号右边替换成&arr。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/89682.html