在基础阶段这东西用的很少很少,你可以不用但是不能不会。
用户在定义函数的时候,函数通常会占据一个连续的内存空间,此时的函数便和数组十分相似了,函数的指针是指向函数入口的地址,数组的指针是指向数组首元素的地址。
函数指针的定义如下:
returnType (*pointerName)(param list);
returnType是函数的返回值类型
pointerName是指针名称
param list是函数参数,这里可以只给出类型不给名称,和函数的用法是一样的
例:定义一个求解素数的函数,功能是判断输入值是否是素数,如果是素数则将值返回回来。
根据题意我们可以定义出int prime(int n)函数,如果我们想用函数指针的话只需先定义int (*pprime)(int n)= prime注意标红的位置,如果这里不打括号那就是直接调用函数原型,返回的类型是int *,是一个地址。
指针定义好后我们就可以调用函数了,调用方法和函数一样(*pprime)(int n)
例子:
#include <stdio.h>
//是素数返回自身
int prime(int n){
//语句省略;
return n;
}
int main(){
int x,y;
sacnf("%d",&x);
//定义函数指针
int (*pprime)(int) = prime; //也可以写作int (*pprime)(int a)
y = (*pprime)(x);
printf("prime: %d\n", y);
return 0;
}