函数指针 与 指针函数
1. 函数指针(重要):
定义:它是一个指针,指向函数;即它是函数形式的指针变量。
格式: 返回值类型 (* 变量名)(参数1类型, 参数2类型……);
例子:
#include<stdio.h> //定义函数function_1 void function_1(int , float) { printf("%s\n", "function_1"); rreturn 0; } //定义函数function_2 void function_2(int, float) { printf("%s\n","function_2"); return 0; } //定义函数指针 pf int (* pf)(int ,float); //主函数 int main () { pf = function_1;//函数指针指向function_1 pf(10,3.14); //调用了函数function_1 pf = function_2;//函数指针指向了function_2 pf(2, 2.12); //调用了函数function_2 return 0; }
详解:正如以上所叙述,函数指针是一个特殊的变量,指向的是函数。一般的变量定义格式:类型 变量名;即对于普通的来说仅仅在变量名前加上一个类型就可以了。
但是对于函数指针来说就复杂了,需要加上 返回值类型 (* )(参数1类型, 参数2类型……);才可以。即返回值类型 (* )(参数1类型, 参数2类型……);是函数指针变量的类型。
2. 指针函数:
定义:它是一个函数,返回值的类型是指针。
格式:返回值类型 *函数名(参数1类型, 参数2类型)
_type_ *function(int, int)与普通函数int function(int,int)类似,只是返回的数据类型不一样而已,_type_ *function(int, int)返回的是指针地址,int function(int,int)返回的是int型数据。
#include "stdio.h" #include "stdlib.h" int sum =0; int *getAdd(int a, int b) { sum = a+b; return ∑ } int getDiff(int a, int b) { return a>b?(a-b):(b-a); } int main() { int *pTemp, Temp; pTemp = getAdd(115,10); printf("ADD result:%d\n", *pTemp); Temp = getDiff(115,10); printf("DIFF result:%d\n", Temp); return 0; }