函式指標

絕命師傅發表於2020-11-02
  1. 怎麼定義

int max(int a, int b)
{
	return (a>b?a:b;
}
int (*fun)(int, int);
//將函式頭中的函式名替換成(*fun)
int (*  const fun)(int, int)
  1. 作用

  • 儲存地址,儲存程式入口的地址
  • 指向不同函式,表現不同功能,函式指標的多型性
***********地址************
fun = max;
fun = &max;//上下等價,賦值時型別要一致
************多型性*********
fun = min;
fun(5,22);
fun = max;
fun(5,22)
  1. 使用

  • 作為引數使用,回撥函式
void printfind(int (*fun)(int,int), int a, int b)
{
		int result;
		result = fun(a,b);
		printf("result:%d\r\n", result);
}
printfind(max, 5, 22);
printfind(min, 5, 22);
  • 結構體使用函式指標-封裝性,模組化程式設計
typedef struct{
	int(*fun)(int, int);
	int a;
	int b;
}FunStruct;

void printFind2(FunStruct *funStruct)
{
	int result;
	result = funStruct->fun(funStruct->a, funStruct->b);
	printf("result:%d\r\n", result);
}
  1. 區別

 int (*fun)(int,int)//函式指標,可賦值
 int *fun(int,int);//指標函式,不可賦值
 int (*p)[10];//陣列指標,可賦值

相關文章