个人理解—函数指针

        函数指针的实质是指针变量。函数代码在内存中是连续分布的,函数第一段代码的地址为函数的首地址,在C中用函数名表示。

函数       void func(void);
函数指针    void (*pfunc)(void);

        名为pfunc的指针,其指向一个类型为void形参列表为void的函数。

        可以用以下方式进行指针绑定。

pfunc=func;
pfunc=&func;

         使用时:

pfunc();

        进行调用。

printf("pfunc=%p",pfunc);  输出0x1911d6
printf("&pfunc=%p",pfunc);  输出0x1911d6

        可见&func与func在数值上无差异。

        用strcpy()函数举例,strcpy的函数定义如下:

char *strcpy (char *dest,const char *src);
指向这个函数的函数指针可定义为:
char *(*PFunc) (char*,const char*);
PFunc=strcpy;
char a[5]={0};
PFunc(a,"abc");

        typedef用于重命名类型,输出也是类型而不是变量。

typedef char* (*PType)(char *,const char *);
重命名了一种类型,这个名为为PType,类型为char *(*)(char *,const char *);
PType p3;进行定义等效于char *(*p3)(char *,const char *);
p3=strcyp;这里的PFunc指向了strcpy;
此时p3与上面的PFunc等效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值