| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1549 人关注过本帖
标题:有关函数指针变量的疑惑,请看看。
取消只看楼主 加入收藏
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:5 
有关函数指针变量的疑惑,请看看。
程序代码:
#include<stdio.h>
typedef int (*p)
int fun(int a)
{
   
    return(a);
}
void main()
{
   
    int b=2;
    int z;
    p q;
   
    q=fun;
    //z=(*q)(b)
     z=q(b);   
printf("%d\n",z);
   
   
}
  就这两句语句都正确//z=(*q)(b)
                        z=q(b);
  但,为什么(*q)(b)和q(b)的效果会是等同的,连调试的参数都是一模一样的?
q=fun;这句只是把函数fun赋值给q这个函数指针变量啊,后面是z=q(b);,输出结果
居然是z的值,难道说调用指针变量q可以直接就执行函数体fun?  
2016-10-08 16:59
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 2楼 ehszt
typedef int  (*p)();  粘贴少了,不好意思。
2016-10-08 17:55
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 2楼 ehszt
q=fun是地址赋给q
2016-10-08 17:58
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 5楼 NiuYoohoo
能就我的问题解释清楚点吗?
2016-10-08 18:03
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 8楼 NiuYoohoo
您这个是c++吧?我知道你想表达的意思是fun函数名和
数组名一个道理,是首地址的意思。但我搞不清楚为什么
用q(a)和(*q)(a)都能得到想要的结果?
2016-10-08 18:57
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 12楼 书生牛犊
真是感谢您,我在书上和视频上没看到过这样的解释,很生动。再次感谢!
2016-10-08 20:19
快速回复:有关函数指针变量的疑惑,请看看。
数据加载中...
 
   



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

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