【C語言】函式指標陣列和指向函式指標陣列的指標
阿新 • • 發佈:2018-12-27
一、函式指標陣列
1.1函式指標陣列的宣告
函式指標陣列的宣告如下,所謂函式指標陣列就是在之前的函式指標的基礎上增加了[],由於[]的優先順序高於*,故 pf先與[]結合,說明它是一個數組,再與*結合說明陣列中的元素的型別是指標,再看後面的引數列表,說明每一個指標都指向一個函式的入口地址,並且指向的函式的返回型別為int。
int (*pf[])(int, int);
1.2函式指標的使用
以下程式碼展示了函式指標陣列的一個簡單的應用。
#include <stdio.h>
int Add(int x, int y)
{
return x + y;
}
int Sub (int x, int y)
{
return x - y;
}
int main()
{
int a = 10;
int b = 20;
//定義一個有2個指標的陣列,指標指向一個函式,該函式有兩個整型引數並返回一個整型數
int(*p[2])(int, int);
p[0] = Add; //函式指標陣列的第一個元素指向Add函式
p[1] = Sub;
printf("%d, %d\n", p[0](a, b), p[1](a, b));
system("pause");
return 0;
}
二、指向函式指標陣列的指標
在此,僅作介紹,它也叫函式指標陣列的指標。下面的定義怎麼理解呢?首先,p和*結合說明是一個指標,之後與[]結合,說明是一個數組指標,再與*結合說明用一個指標指向了陣列指標,之後又指向了一個函式的入口地址,該函式有兩個int型別引數,返回值是int。
int (*(*p)[])(int, int);
總而言之,指向函式指標陣列的指標就是在函式指標陣列的基礎上,再加一個*表示一個指標去指向它。當然,既然有函式指標陣列的指標,則必然還有函式指標陣列的指標陣列,只不過一般的程式設計用到的情況很少,如果讀者有興趣的話,可以去研究一下。