C語言帶有指針變量的函數指針的應用示例

首先,引用一下函數指針的定義:

在C語言中,一個函數總是佔用一段連續的內存區,而函數名就是該函數所佔內存區的首地址。我們可以把函數的這個首地址(或稱入口地址)賦予一個指針變量,使該指針變量指向該函數。然後通過指針變量就可以找到並調用這個函數。我們把這種指向函數的指針變量稱爲“函數指針變量”。
函數指針變量定義的一般形式爲:
類型說明符  (*指針變量名)();
其中“類型說明符”表示被指函數的返回值的類型。“(* 指針變量名)”表示“*”後面的變量是定義的指針變量。最後的空括號表示指針變量所指的是一個函數。

其次,在函數指針的入參中,帶有指針變量,目的是將變量的地址放到函數中,從而改變該變量的值。

下面給出一段演示的示例代碼:

#include <stdio.h>

void add(int x, int y, int *result)
{
	*result = x + y;
}

void sub(int x, int y, int *result)
{
	*result = x - y;
}

int main()
{
	int result;
	void (*p)(int x, int y, int *result);
	p = add;
	(*p)(3, 4, &result);
	printf("result = %d\n", result);

	p = sub;
	(*p)(10, 4, &result);
	printf("result = %d\n", result);
}

演示的結果如下:

從上面的示例可以看出,函數指針的入參和出參類型是固定的,只不過是完成了不同運算方式;3個入參中可以有指針變量,該指針變量也可以是更復雜的結構體指針,以滿足更加豐富的需求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章