結合typedef更爲直觀的應用函數指針

“函數指針”的本質是一個指針變量,只不過該指針變量指向函數。

1:簡單應用

形式1:返回類型(*函數名)(參數表)

#include <stdio.h>

char* (*test)(char *);//定義一個函數指針,使用之前對其賦值
char* fun(char *ch)//定義一個普通函數
{ 
	return ch;
}

void main()
{
	test = fun;//對函數指針賦值
	printf("%s\n",test("hello world"));
}

2:結合typedef 應用函數指針

形式2:typedef 返回類型(*函數名)(參數表)

#include <stdio.h>

typedef char* (*TEST)(char *);//使用typedef定義一個函數指針類型
TEST test;//定義函數指針

char* fun(char *ch)//定義一個普通函數
{ 
	return ch;
}

void main()
{
	test = fun;//對函數指針賦值
	printf("%s\n",test("hello world"));
}
typedef的功能是定義新的類型。

第一句就是定義了一種TEST類型的函數指針。該函數返回類型爲char * ,參數類型爲char * 。在下面的代碼中可以像int,char一樣使用TEST類型了。

第二句利用TEST類型定義來一個變量test可以像平常一樣使用了。

相比第一種方法,此方法較直觀


3:結合typedef 應用函數指針數組

形式3:typedef 返回類型(*函數名[ ])(參數表)

#include <stdio.h>

char* fun1(char *ch)//定義一個普通函數
{ 
	return ch;
}

char* fun2(char *ch)//定義一個普通函數
{ 
	return ch;
}


void main()
{
	typedef char* (*TEST[2])(char *);//使用typedef定義一個函數指針類型
	TEST test = {fun1,fun2};

	printf("1:%s\n 2:%s \n",test[0]("call fun1"),test[0]("call fun2") );
}
相比第一種方法,此方法更爲直觀

發佈了47 篇原創文章 · 獲贊 235 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章