指針能夠指向變量、數組,也能夠指向函數,函數指針就是指向函數的指針 函數名實際是程序在內存中的起始地址。而指向函數的指針能夠把地址傳遞給函數 也能夠從函數返回給指向函數的指針。例如這個例子:經過一個函數求兩個數的和 並經過函數指針調用該函數。 #include<stdio.h> int sum(int a,int b);//求和函數的聲明 void main() { int a,b; int (*fun)(int,int);//聲明一個函數指針 printf("請輸入兩個整數:"); scanf("%d,%d",&a,&b); printf("第一種調用函數的方法:函數名調用求和函數:\n"); printf("%d+%d=%d\n",a,b,sum(a,b));//經過函數名調用 fun=sum;//函數指針指向求和函數 printf("第二種調用函數的方法:函數指針調用求和函數:\n"); printf("%d+%d=%d\n",a,b,(*fun)(a,b));//經過函數指針調用函數 } int sum(int m,int n)//求和函數實現 { return m+n; } 程序運行結果以下: 在程序中的語句int(*fun)(int,int);是聲明一個指向函數的指針變量 而且所指向的函數返回值是整型,有兩個整型參數。語句fun=sum 表示函數指針fun指向函數sum,fun和sum都指向函數sum的起始地址 程序在編譯階段會被翻譯成一行行指令並被裝入到內存區域。 其中,主函數中的語句(*fun)(a,b);是執行調用求和函數的,也能夠寫成fun(a,b)的形式 由於函數自己就是一個地址