搜索
bottom↓
回复: 2

请教指针问题

[复制链接]

出0入0汤圆

发表于 2013-7-27 15:21:34 | 显示全部楼层 |阅读模式


如上图,小的实在看不懂上面的代码,尤其是(2),(3),(5),麻烦大家多多指点,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入296汤圆

发表于 2013-7-29 13:11:21 | 显示全部楼层
(2) 结构体的前置声明
(3) 定义了一个函数指针类型
(5) 用新定义的函数指针类型定义了一个函数指针(这就是所谓的虚函数)

出0入0汤圆

 楼主| 发表于 2013-8-1 11:55:28 | 显示全部楼层
谢谢傻孩子老师指点。

小的在网上查询一点资料,有点了解了。
(一)简单的函数指针的应用。
  
//
形式1:返回类型(*函数名)(参数表)

char (*pFun)(int);  
char glFun(int a){ return;}
void main()
{
      pFun = glFun;
      (*pFun)(2);  
}

第一行定义了一个指针变量pFun。首先我们根据前面提到的“形式1”认识到它是一个指向某种函数的指针,这种函数参数是一个int型,返回值是char类型。只有第一句我们还无法使用这个指针,因为我
们还未对它进行赋值。
第二行定义了一个函数glFun()。该函数正好是一个以int为参数返回char的函数。我们要从指针的层次上理解函数——函数的函数名实际上就是一个指针,函数名指向该函数的代码在内存中的首地址

然后就是main()函数了,它的第一句您应该看得懂了——它将函数glFun的地址赋值给变量pFun。main()函数的第二句中“*pFun”显然是取pFun所指向地址的内容,当然也就是取出了函数glFun()的内容,
然后给参数为2。

(二)使用
typedef更直观更方便。  
//形式2:typedef 返回类型(*新类型)(参数表)

typedef char (*PTRFUN)(int);
PTRFUN pFun;   
char glFun(int a){ return;}
void main()
{
pFun = glFun;
(*pFun)(2);  
}

typedef的功能是定义新的类型。第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个
int为参数并返回char类型。后面就可以像使用int,char一样使用PTRFUN了。
  
第二行的代码便使用这个新类型定义了变量pFun,此时就可以像使用形式1一样使用这个变量了。

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 16:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表