| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1474 人关注过本帖
标题:有关函数指针变量的疑惑,请看看。
只看楼主 加入收藏
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 8楼 NiuYoohoo
您这个是c++吧?我知道你想表达的意思是fun函数名和
数组名一个道理,是首地址的意思。但我搞不清楚为什么
用q(a)和(*q)(a)都能得到想要的结果?
2016-10-08 18:57
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:15 
难道说调用指针变量q可以直接就执行函数体fun?     对的。

所谓的函数int fun(int)其实就跟  数组int a[100]   类似,fun指向那样一个函数的地址,a指向数组的地址。

前面的代码中,你声明了一个(int*)(int)指针p的时候就应该清楚这是一个函数指针,指向的函数带有int类型返回值,需要一个int的参数。

int *ptr=a;
数组指针也一样,ptr[i]==a[i],所以        //z=(*q)(b)
                        z=q(b);
 (*q)(b)和q(b)的效果会是等同的,连调试的参数都是一模一样的。

---
q=fun;这句只是把函数fun赋值给q这个函数指针变量啊   换种说法可能更准确,q指向了fun函数,所以对q的操作可以视为对fun函数的操作

φ(゜▽゜*)♪
2016-10-08 19:03
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 11楼 弟大勿勃
在程序中加一句
printf("%p\n%p\n%p\n%p\n",q,*q,**q,***q);  
你会发现他们的值都一样。
至于为什么会一样,我也有点搞不清楚。
2016-10-08 19:47
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 12楼 书生牛犊
真是感谢您,我在书上和视频上没看到过这样的解释,很生动。再次感谢!
2016-10-08 20:19
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:0 
函数指针这样定义? typedef int (*p)(int);
2016-10-13 18:09
快速回复:有关函数指针变量的疑惑,请看看。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014969 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved