C语言的函数指针数组的实践测试

1.函数指针数组的的写法

#include<stdio.h>

void func_0(void);
void func_1(void);
void func_2(void);
void func_3(void);

typedef struct
{
	void (*Func)(void);   //不带形参数的函数指针
	int cmd1,cmd2;      //传递的两个参数
}Fc_type;

const Fc_type function_arry[]=
{
	{func_0,0x01,0x00},
	{func_1,0x02,0x01},
	{func_2,0x03,0x00},
	{func_3,0x04,0x01},
	//队列的尾部识别结束标志
	{NULL  ,0xff,0xff}
};

int i=1;

void func_0(void)
{
	printf("我是第%d个函数!\n",i++);
}

void func_1(void)
{
	printf("我是第%d个函数!\n",i++);
}

void func_2(void)
{
	printf("我是第%d个函数!\n",i++);
}

void func_3(void)
{
	printf("我是第%d个函数!\n",i++);
}

void CmdProcess(void)
{
	int j=-1;

	while(function_arry[++j].cmd1 !=0xff)   //结尾
	{
		function_arry[j].Func();  //指针函数数组的使用
	}
	printf("j = %d\n",j);
}


void main()
{
	CmdProcess();
}

2.小功能的实现(组合键)

  • 按键一下得到多个按键值输入的方法
#include<stdio.h>
#include<string.h>

void Comkey(int n)
{
	static int key_buff[5];
	static int flag_buff[5]={9,8,7,6,5};
	memcpy(key_buff,key_buff+1,5-1);  //前移1位  好就好在这里
	key_buff[4] = n;   //填入最后一个
	if( 0 == memcmp(key_buff,flag_buff,5))
	{
		printf("调试界面!\n");
	}
}


int main()
{
	int n;
	while(1)
	{
		scanf("%d",&n);
		Comkey(n);
	}
	return 0;
}

3.出现的extern "c"的写法

  • (意思是若定义了C++,则加上extern “C”的花括号,表示C和C++的不同之处)
//不同人的各个规则使用宏改变    意思是若定义了C++,则加上extern “C”的花括号,表示C和C++的不同之处
#ifdef __cplusplus             //c++的宏
extern "C"
{
#endif
//未解释明白
#define printf(...)     ((void)0)   //表示解释掉这个函数
#define scanf(...)		((void*)0)  //表示释放不使用这个函数

#ifdef __cplusplus
}
#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值