1. 程式人生 > >【C語言】函式指標陣列和指向函式指標陣列的指標

【C語言】函式指標陣列和指向函式指標陣列的指標

一、函式指標陣列

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);

     總而言之,指向函式指標陣列的指標就是在函式指標陣列的基礎上,再加一個*表示一個指標去指向它。當然,既然有函式指標陣列的指標,則必然還有函式指標陣列的指標陣列,只不過一般的程式設計用到的情況很少,如果讀者有興趣的話,可以去研究一下。