void (*getDataP)(unsigned char *strData,int base,int a);//定义了一个函数指针
void getData(unsigned char *strData,int base,int a)//定义了一个函数
{
int i;
unsigned char str[20]={0};
char strMidData[10]={0};
for(i=0;i
{
sprintf(str,"%02x",*(strData+base+i));
strcat(strMidData,str);
}
printf("%s\n",strMidData);
}
int main(int argc, char *argv[])
{
int i=0;
unsigned char str[6]={0x30,0x31,0x32,0x33,0x34,0x35};
getDataP=getData;//将函数的入口地址给函数指针变量;当然函数名就是函数的入口地址
(*getDataP)(str,0,4);
}
通过函数指针来调用函数:
(*getDataP)(str,0,4);对这句我就有点疑惑了,既然getDataP被赋值函数的入口地址;为什么调用的时候前面要添加一个*号;大家都知道如果直接调用函数的话:getData(str,0,4);就可以呀!getData是入口地址,getDataP也是入口地址;哪为什么getDataP前面要添加一个*号;
于是将 (*getDataP)(str,0,4);前面的*号去掉,然后编译执行,结果也通过;
后来查询了一下资料,说加上*可一个,不加*也可以;奇怪...
阅读(942) | 评论(0) | 转发(0) |