function pointer in C

函數指針數組:

#include <stdio.h>

int add(int a, int b)
{
	return a + b;
}

int plus(int a, int b)
{
	return a - b;
}

int multiply(int a, int b)
{
	return a* b;
}

typedef int(*foo_func)(int, int);
typedef int(*bar_func[3])(int, int);

int main()
{
	/* 方式一 */
	int(*pfunc1[3])(int a, int b) = { add,plus,multiply };
	for (int i = 0; i != sizeof(pfunc1)/sizeof(pfunc1[0]); ++i)
	{
		printf("pfunc1[%d](2, 3): %d\n", i, pfunc1[i](2, 3));
	}

	/* 方式二 */
	foo_func pfunc2[3] = { add,plus,multiply };
	for (int i = 0; i != sizeof(pfunc2)/sizeof(foo_func); ++i)
	{
		printf("pfunc2[%d](2, 3): %d\n", i, pfunc2[i](2, 3));
	}

	/* 方式三 */
	bar_func pfunc3 = { add,plus,multiply };
	for (int i = 0; i != sizeof(bar_func)/sizeof(pfunc3[0]); ++i)
	{
		printf("pfunc3[%d](2, 3): %d\n", i, pfunc3[i](2, 3));
	}

	return 0;
}

函數指針作爲函數參數:


#include <stdio.h>

int add(int a, int b)
{
    return a + b;
}

int plus(int a, int b)
{
    return a - b;
}

int calc(int(*pfunc)(int, int), int a, int b)
{
    return pfunc(a, b);
}

int main()
{
    int res1 = calc(add, 2, 3);
    int res2 = calc(plus, 2, 3); 

    printf("res1: %d\n", res1);
    printf("res2: %d\n", res2);

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