【C語言】 函數指針小談

指針能夠指向變量、數組,也能夠指向函數,函數指針就是指向函數的指針
函數名實際是程序在內存中的起始地址。而指向函數的指針能夠把地址傳遞給函數
也能夠從函數返回給指向函數的指針。例如這個例子:經過一個函數求兩個數的和
並經過函數指針調用該函數。

#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)的形式
由於函數自己就是一個地址
相關文章
相關標籤/搜索