C語言 指標之函式指標

2021-10-24 12:52:11 字數 1692 閱讀 8349

一、函式指標的概念

二、函式指標的應用

(1)呼叫函式

(2)將函式的位址作為函式引數傳入其他函式。

三、例項演示

函式指標的定義

若在程式中定義了乙個函式,編譯時,編譯器會為函式**分配一段儲存空間,這段空間的起始位址(又稱入口位址)稱為這個函式的指標。

與普通變數相同,可以定義乙個指標指向存放函式**的儲存空間的起始位址,這樣的指標就是函式指標

。函式指標的定義格式如下:

返回值型別 (*變數名)(引數列表)

返回值型別是指標指向函式的返回值型別,*表示乙個指標變數,引數列表是指標指向函式的形參列表。

【注釋】因為*的優先順序較高,所以要將*和變數名括起來

例項:

int func(int a,int b);//函式宣告

int (*p) (int , int );//定義乙個引數列表為兩個int型的變數,返回值型別為int型的函式指標p

p=func;//函式指標p指向函式func的起始位址 

使用函式指標呼叫對應函式,方法和使用函式名呼叫函式類似,只需將函式名替換成(*指標名)

呼叫函式指標p指向的函式

(*p)(3,5);

將函式的位址傳入其他引數,就可以在被調函式中使用實參函式。

將func的位址作為引數傳入func2函式

void func2(int(*p)(int,int),int b,int c);

#include void sum_row(int(*arr)[4], int raw, int* sum);//行求和函式宣告

void sum_col(int(*arr)[4], int raw, int* sum);//列求和函式宣告

//行求和函式定義

void sum_row(int(*arr)[4], int raw, int* sum)

}//列求和函式定義

void sum_col(int(*arr)[4], int col, int* sum) }

int main()

} printf("輸出初始矩陣:\n");

int(*p)[4];//定義陣列指標p

p = matrix;

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

printf("\n");

} int sum;

void (*q)(int(*arr)[4], int raw, int* sum);//定義函式指標

printf("計算第一行的和:\n");

q = sum_row;

(*q)(matrix, 1, &sum);//呼叫行求和函式

printf("sum=%d\n",sum);

printf("計算第一列的和:\n");

q = sum_col;

(*q)(matrix, 1, &sum);//呼叫列求和函式

printf("sum=%d\n", sum);

}

執行結果:

C語言 指標函式和函式指標

指標函式和函式指標 指標函式其實是乙個簡稱,是指帶指標的函式,它本質上是乙個函式,只是返回的是某種型別的指標。其定義的格式為 型別識別符號 函式名 參數列 函式指標,從本質上說是乙個指標,只是它指向的不是一般的變數,而是乙個函式。因為每個函式都有乙個入口位址,函式指標指向的就是函式的入口位址。其定義...

C語言 指標函式和函式指標

1 指標函式是指帶指標的函式,本質上是乙個函式,函式返回值是某一型別的指標 定義 型別識別符號 函式名 參數列 int f int x,int y 它首先是乙個函式,只不過這個函式的返回值是乙個位址值,函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函...

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

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