*p=&a和p=&a C语言中的函数指针和指针函数,有什么区别吗?该如何理解?
C语言中的函数指针和指针函数,有什么区别吗?该如何理解?函数指针和指针函数的区别:1. 名字解析。这两个名词都是带有修饰的名词,可以略微扩展一下,在中间加个助词"的",函数的指针和指针的函数现在看看,
C语言中的函数指针和指针函数,有什么区别吗?该如何理解?
函数指针和指针函数的区别:
1. 名字解析。这两个名词都是带有修饰的名词,可以略微扩展一下,在中间加个助词"的",函数的指针和指针的函数现在看看,稍微清晰了一点,现在再扩展一下,加点修饰词--指向函数的指针和返回值为指针的函数现在基本明确了。
2. 格式。
Type (* pFunc)(Type para) -- 函数指针
Type* Func(Type para) -- 指针函数
3. 先说指针函数,其实它就是普通函数,只不过返回值是指针(其实就是地址)而已,很多人因为恐惧指针,觉得它神秘!
4. 函数指针。这个有点复杂,首先*和pFunc先结合,优先级最高,因此pFunc就是指针了,同时这个指针后面带走一对小括号,里面还有参数,和函数的参数是一样的格式,因此这个指针就是函数指针,这个指针前面还有个类型-返回值类型!有人这里感觉很奇怪,指针怎么有返回值呢?
5. 指针有返回值,是因为这个指针讲来使用的时候,会指向一个格式和它自己类似的函数,因此这个指针的返回值和参数格式就决定了指向的函数的格式!
6. 函数指针要熟练,没有为啥,必须会,因为函数指针使用的时候体现的是C语言中的联编特点,也是后来C 语言中多态的雏形!
在C 中函数指针有什么作用呢,为什么不直接调用函数而要使用函数指针?
可以作为回调函数。只需要将函数指针作为参数传给另一个函数,那么另一个函数执行过程中或执行以后就可以通过这个指针调用预先设定好的用户函数了。
函数指针有什么作用呢?
我给你解释一下为什么要用函数指针:有的通用函数中要涉用到另一个函数,但函数名称未定,是让用户编的,当然要做成函数指针,如果通用定积分计算,被计算函数是待定的,是由调用者确定的函数;通用排序函数也是,比较函数与交换函数也是让用户自已编的,这也得是函数指针
c语言中函数指针是什么有什么用举个实例?
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
函数指针有两个用途:调用函数和做函数的参数。
函数指针的声明方法为:
返回值类型 ( * 指针变量名) ([形参列表])
如:
int func(int x) /* 声明一个函数 */
int (*f) (int x) /* 声明一个函数指针 */
f=func /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = &func
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
下面的程序说明了函数指针调用函数的方法:
#include<stdio.h>int max(int x,int y){return (x>y? x:y)}int main(){ int (*ptr)(int, int) int a, b, c ptr = max scanf("%d%d", &a, &b) c = (*ptr)(a,b) printf("a=%d, b=%d, max=%d", a, b, c) return 0}