淺析函數指針及函數指針數組

一、函數指針

一、定義
函數指針是指向函數的指針變量。 因此“函數指針”本身首先應是指針變量,只不過該指針變量指向函數。這正如用指針變量可指向整型變量、字符型、數組一樣,這裏是指向函數。

二、聲明方法

void test()
{
    printf("hello world\n");
}

int main()
{
    printf("%p\n",test);
    printf("%p\n",&test);
    return 0;
}
//此時打印出的兩個地址相同,如果要存儲test函數的地址,應該聲明爲:
void (*ptest)();
//形參可以省略 這就是一個指向test的函數指針

二、函數指針數組

數組是一個存放相同類型數據的存儲空間,如果把函數的地址存放到一個數組中,那這個數組就叫做函數指針數組。

int (*parr1[10])(); //函數指針數組
int (*parr2)(); //函數指針

函數指針數組比函數指針多了一個[ ]操作符。

函數指針數組的用途:轉移表

三、指向函數指針數組的指針

指向函數指針數組的指針是一個指針,指針指向一個數組,數組的元素都是函數指針。

void test(const char* str)
{
    printf("%s\n", str);
}

int main()
{
    //函數指針pfun
    void (*pfun)(const char*) = test;
    //函數指針的數組pfunArr
    void (*pfunArr[5])(const char* str);
    //指向函數指針數組pfunArr的指針ppfunArr
    void (*(*ppfunArr)[10])(const char*) = &pfunArr;
    return 0;
}
發佈了35 篇原創文章 · 獲贊 12 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章