函式指標和函式指標陣列及其應用

2021-07-23 03:34:11 字數 2603 閱讀 7031

先來看乙個簡單的例子。

int a=3;

void *p=&a;

這是乙個基礎的不能再基礎的例子。相信學過指標的都能看得懂。p是乙個指標,指向a。a 是乙個整形變數。

函式指標和其類似,只不過其指向的不是乙個變數,而是乙個函式,僅此而已。話不多說,看個例子。

void (*funcpointer)(double x);

void f1(double x){}

void f2(double x){}

funcpointer=f1;

funcpointer=&f2;

好了。簡單的5行**就完成了乙個簡單的函式指標。我們一行行來看。

第一行。宣告了乙個函式指標。其和普通指標有啥區別。我放在一起讓大家看一下。

void (*funcpointer)(double x);//函式指標

void *pointer;//普通指標

看出來了麼。函式指標無非多了兩個括號和乙個引數列表。想想也是。函式指標如果沒有引數列表那還玩個啥。所以肯定需要引數。那多那倆括號幹嘛?好,那大家看一下這個例子。

void *funcpointer(double x);

長得是不是和函式指標賊像。其實也就是像而已,他們是兩個東西。這個只是宣告了乙個普通的函式(我把它起名叫funcpointer,只是想對比一下),它的返回值是乙個void型別的指標而已。有些地方也把它叫做指標函式(就是返回值為指標的函式)

好了宣告說完了,我們接下來往下看。第二三行沒啥說的,宣告倆函式而已。

那麼我麼來看看四五行。函式指標既然是個指標,我們肯定要讓它指東西啊。那麼這兩行就是讓它指向具體的函式。這兩種寫法都是ok的。都可以被編譯器接受。(以前只有第一種被認可,現在兩種都可以了)

好了,說了這麼多。總結一下。

函式指標就是指向函式體第一行可執行語句的乙個指標。至於他有什麼作用呢。這裡給大家提供乙個具體的應用的例子。

相信,大家中學的時候都學過積分這個鬼東西。不知道還記不記得積分最原始的計算方法。

對,沒錯,無限細分,求面積。好的。我們接下來就給大家乙個應用函式指標有關積分計算的例子。

直接貼出**。

#include //calculate用於計算積分。一共三個引數。第乙個為函式指標func,指向待積分函式。二三引數為積分上下限

double calculate(double(*func)(double x), double a, double b)

return sum;}

double func_1(double x)

double func_2(double x)

void main()

相信看了我剛才的介紹,這個例子很輕鬆就能看得懂。這個例子也清晰的把函式指標的作用表現的淋漓盡致。calculate這個積分函式有乙個引數是函式指標,那麼我麼在呼叫的時候只用傳入具體的函式名,他就能計算出這個函式的積分。是不是很方便。所以說函式指標是個很好用的東西。

函式指標說完了。我們接下來來看看函式指標陣列。

多了倆字。陣列。前面四個字還一樣。那是不是就是有乙個陣列,用它來盛放函式指標。嗯,沒錯,就是這樣。

有了剛才的基礎,我直接給出例子。

void (*funcpointerarray[3])(double x);//函式指標陣列

void (*funcpointer)(double x);//函式指標

兩個放在一起對比,函式指標陣列無非就像陣列宣告一樣,在後面加了而已。僅此而已。

那它怎麼用呢?

void f1(double x){}

void f2(double x){}

void f3(double x){}

來三個具體的函式,f1,f2,f3.

void (*funcpointerarray[3])(double x);

funcpointerarray[0]=f1;

funcpointerarray[1]=f2;

funcpointerarray[2]=f3;

funcpointerarray[0](「2.333333」);

funcpointerarray[1](「6.666666」);

簡直就和普通的陣列一模一樣。沒錯,無非他儲存的是函式指標而已。

最後,貼乙個用函式指標陣列的具體的應用的例子。

#include void additem(char *name)

void deleteitem(char *name)

void finditem(char *name)

void updateitem(char *name)

void main()

在上述的例子中,用函式指標陣列代替了大量的switch case 直接通過傳入的num值來呼叫不同的函式。

好了,相信講到這裡,大家應該清楚的明白什麼是函式指標和函式指標陣列了。

陣列指標和指標陣列 函式指標和指標函式

一 陣列指標與指標陣列 1,指標陣列 所謂指標陣列,就是指標組成的陣列,即陣列的元素為指標 int pa size size為元素數目,元素的值為int型別的指標 2,陣列指標 所謂陣列指標,就是指向陣列的指標,即其是乙個指標,指向陣列。int pa size size為陣列的元素數目,pa指向乙個...

函式指標 函式指標陣列和指標函式

1.函式指標 這個指標返回乙個函式 int f int x 宣告乙個函式指標 f func 將func函式的首位址賦給指標f 2.函式指標陣列 這個指標返回一組函式 include stdio.h void function0 void void function1 void void functi...

函式指標和指標函式 陣列指標和指標陣列

函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也占用儲存空間,都有相應的位址。可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式 的首位址,指向函式 首位址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...