1,明確相關概念
a,指標函式:一個函式,只是回傳值是一個指標,eg: int *add(int a ,int b)
b,函式名就是整個函式里面代碼的首地址
int add(int a,int b)
{
printf("%d\n",a);
print("%d\n",b);
return a + b;
}
add 函式名就是整個函式add的首地址,就是三條陳述句的首地址,等于printf("%d\n",a);的首地址
2,函式指標概念:本質是一種程式員自己定義的資料型別(跟int,結構體資料型別一樣),它保存著一個函式的地址
3,函式指標資料型別宣告的語法:(不會分配記憶體,大型程式寫于頭檔案)
語法: 回傳值資料型別(*函式指標名)(形參表)
eg:int (*pfunc)(int a,int b);//pfunc就是一種資料型別,當成int型別來用
or eg:typedef int (*pfunc_t)(int a,int b);//對函式指標取別名pfunc_t(建議方法)
4,函式指標變數定義語法格式:函式指標名 函式指標變數;
eg:pfunc_t pfunc;//pfunc就是一個函式指標變數,將來保存函式地址
5,函式指標變數初始化
pfunc_t pfunc = add;//定義、初始化函式指標變數,指向add
6,通過函式指標變數來訪問指向的函式,通過函式指標變數呼叫指向的函式
語法:函式指標變數名(實參表);
//實體:
#includ<stdio.h>
typedef (*pfunc_t)(int a,int b);
int add(int a,int b)//定義加法函式
{
return a + b;
}
int sub(int a,int b)//定義減法函式
{
return a -b;
}
void main(void)
{
int ret = 0;
pfunc_t pfunc = NULL;//定義函式指標變數且初始化為空
pfunc = add;//把add函式的地址保存于函式指標變數pfunc
ret = pfunc(100,200);呼叫add函式
printf("a + b = %d\n",ret);
func = sub;///把sub函式的地址保存于函式指標變數pfunc
ret = pfunc(100,200);//呼叫sub函式
printf("a + b = %d\n",ret);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251349.html
標籤:C
