标题:有关函数指针变量的疑惑,请看看。
取消只看楼主
弟大勿勃
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469515-1-1.html




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

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