1. 程式人生 > >C/C++函式指標與指標函式

C/C++函式指標與指標函式

前面說的話

面試的時候,經常有面試官問這個問題,在Linux核心裡面也是經常被使用的,在看很多大神的程式碼裡面,我們也經常遇到函式指標與指標函式,一樣,如果你自己沒問題了,就不用往下看了。

 

定義

我們看個程式碼

int *func(int a,int b)

我們之前說過運算子的優先順序,*的優先順序低於

由於“*”的優先順序低於“()”的優先順序,因而func首先和後面的“()”結合,也就意味著,func是一個函式。即:

int *(func)(int a,int b)

然後這個函式的返回值的型別是 int * 即:指向int型別的指標

 

然後我們這樣修改上面的程式碼

int (*func)(int a,int b)

(*func)說明func是一個指標,然後後面跟著()說明這個指標指向一個函式,即函式指標。

所以

函式指標:首先是一個指標,這個指標指向一個函式

指標函式:首先是一個函式,這個函式的返回值一個指標

 

用typedef宣告一個函式指標

我們宣告一個函式指標,正常方法是

int (*pfunc)(int a,int b)

當我們命名很多個函式指標的時候,用上面的方法顯得非常不方便,所以我們可以這樣做

typedef int (*PF) (int a,intb)
PF pfunc;

 

例程:

#include "stdio.h"

typedef int(*PF)(int, int);

int add(int a, int b)
{
	return a + b;
}

int reduce(int a, int b)
{
	return a - b;
}

int main()
{
	PF pfunc = NULL;
	pfunc = add;
	printf("add:%d\n",pfunc(3, 4));
	pfunc = reduce;
	printf("reduce:%d\n", pfunc(3, 4));
	/*getchar是用VS編寫方便檢視輸出*/
	getchar();
	return 0;
}

 

歡迎關注微信公眾號-嵌入式Linux

覺得不錯,請幫忙轉發,點贊,您的每一次支援,我都將銘記於心