指针函数和函数指针的区别(ARM2440中的用法)

指针函数和函数指针的区别:

(1)函数指针:

定义的一个函数指针,当这个指针赋值(一般以函数名形式付给指针),那么这个函数指针指向一个函数。

例如:

int (*p)(int,int);

即:p是一个指向函数的指针变量,该函数有两个整形参数。(注意*p两侧的括号不能省略,表示p先与*结合,是指针变量,然后再与后面的()结合,表示指针变量指向函数)

(2)指针函数:

定义一个指针函数,表示这个函数的返回值是指针

例如:

int *p(int,int);

即:由于()优先级高于*,它就声明了一个p函数了,这个函数的返回值是指向整形变量的指针



(3)在ARM2440中的用法:

struct {
void (*fun)(void);                        //定义一个函数指针,并在结构体数组中对“每个函数指针”成员赋值,让每个成员指向对应的函数
char *tip;
}CmdTip[] = {

{ Temp_function, "Please input 1-11 to select test" } ,

{ BUZZER_PWM_Test, "Test PWM" } ,

{ RTC_Display, "RTC time display" } ,

{ Test_Adc, "Test ADC" } ,

{ KeyScan_Test, "Test interrupt and key scan" } ,

{ Test_Touchpanel, "Test Touchpanel" } ,

{ Lcd_TFT_Test, "Test TFT LCD" } ,

{ Test_Iic, "Test IIC EEPROM" } ,

{ PlayMusicTest, "UDA1341 play music" } ,

{ RecordTest, "UDA1341 record voice" } ,

{ Test_SDI, "Test SD Card" } ,

{ Camera_Test, "Test CMOS Camera"},

{ 0, 0}

};


while(1)
{

U8 idx;

Uart_Printf("\nPlease select function : \n");

for(i=0; CmdTip[i].fun!=0; i++)

Uart_Printf("%d : %s\n", i, CmdTip[i].tip);

idx = Uart_GetIntNum_GJ() ;

if(idx<i)

{

(*CmdTip[idx].fun)();     // 引用每个成员的“函数指针”,执行相应的操作

Delay(20);

Uart_Init( 0,115200 );

}

} 







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值