C語言函式指標與指標函式

2021-09-22 16:34:02 字數 1802 閱讀 7941

在大家剛開始學習c語言的時候,總是分不清函式指標和指標函式,就算是知道了它們之間的區別,也不了解它們的使用場景,

我寫此部落格幫大家縷一縷,也幫我自己縷一縷

1、函式指標與指標函式的概念以及區別

指標函式

從名字上可以看出,首先它是乙個函式,指標指的是返回值為指標

函式指標

從名字上可以看出,首先他是乙個指標,並且是指向函式的指標

2、函式指標與指標函式的區別

①概念上的區別:函式指標值得是指向函式的指標,指標函式指的是返回值為至真的函式。

②功能上的區別:指標函式用來編寫返回值為指標的函式,而函式指標可以實現c語言的泛型程式設計(下面會有例子)

3、函式指標的定義

定義乙個求和函式:

/*求和函式*/

int sum(int a,int b)

int (*p)(int a,int b) = sum;/*將指向函式的指標賦給p*/

int (*p)(int a,int b) = ∑

/*這兩種種定義的方法都可以定義乙個函式指標*/

int c = p(5.6);

intc = *p(5,6);/*兩種方法都可以通過指標呼叫函式*/

4、函式指標和指標函式的應用例項

①先說說指標函式的應用(這個是很簡單的)

#include int* sum(int a, int b)//返回乙個指標

int main()

②指標函式的應用(泛型程式設計)/*重點*/

在c語言裡函式是不能夠同名的,在以前看來,乙個函式只能幹對應一件事,比如說寫乙個由小到大

排序的函式,那麼這個函式就只能實現由小到大的排序,要想從大到小排序就得重寫乙個函式,現在

有了函式指標,我們就可以把指標到乙個引數引數傳進去,就可以用乙個函式實現乙個兩種排序啦,

**如下:

#include void swap(int *a,int *b)

int sort_large_to_small(int a,int b)

return 0;

} int sort_small_to_large(int a, int b)

return 0;

}void sort(int n, int* arr, int (*p)(int a,int b))

} }}int main()

; int n = sizeof(arr)/sizeof(arr[0]);

sort(n,arr,sort_small_to_large);

printf("由小到大排:");

for(int i = 0;i < n;i++)

printf("\n");

sort(n,arr,sort_large_to_small);

printf("由大到小排:");

for(i = 0;i < n;i++)

printf("\n");

return 0;

}

輸出如下:

從**中可以觀察到,我們只是寫了乙個函式,在冒泡比較的時候控制他們的順序,

通過函式指標傳進去,這樣就可以乙個函式即可以由小到大排序,也可以由大到小

排序了。這就達到了一定程度上的泛型程式設計。

以上即是函式指標和指標函式的內容,若讀者發現錯誤,歡迎糾錯

c語言函式指標與指標函式

include include include using namespace std 1 c語言函式指標 解釋 這是一種很特殊的指標,它的指向是乙個函式的入口 作用 該指標可以接受乙個函式的位址,代表這個函式執行函式的操作 函式指標舉例 下面是乙個函式指標pfunc,它只能指向返回值為float,...

C語言 函式指標與指標函式

寫在前面的話 博主是乙個小菜鳥,並且非常玻璃心!如果文中有什麼問題,請友好地指出來,博主查證後會進行更正,啾咪 每篇文章都是博主現階段的理解,如果理解的更深入的話,博主會不定時更新文章。typedef用於為各種資料型別定義新名字。語法 typedef unsigned char byte 在這個型別...

C語言 指標與函式指標

1 void p p是乙個指標,指標p指向乙個變數,變數的資料型別待定,使用過程需要強轉。2 void p p是乙個函式,p是函式名,函式的返回值是乙個指向void 型別的指標 指向void型別就是指向型別待定 3 void p p乙個函式指標 指向函式入口位址 函式的返回值是void型別 4 vo...