| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:问下有关指针函数的问题啊?
取消只看楼主 加入收藏
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
问下有关指针函数的问题啊?
今天见到了这样的一段代码
      double avg(double a,double b)
      main()
      {  double x,y,(*p)();
          scanf("%lf%lf",&x,&y);
          p=avg
           printf(%f\n",(*p)(x,y)
       }
         double avg(double a,double b)
         {return((a+b)/2);}
 在这里面我有两个疑问  1. 在程序的第三行的(*p)()的语句能不能写成  *p(),  这是定义了一个指针数组吗?
                       2. 程序将指针P指向函数avg,这样用(*p)(x,y)方式来调用函数,应该怎么样理解
         
搜索更多相关主题的帖子: double return double return 
2011-09-04 15:08
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:0 
回复 2楼 pauljames
那如果在定义的时候,这样定义 double   x,y,*p ;
然后在后面也将avg 的地址赋给  p ,   p=avg ;  那么程序还能通过编译吗?

2011-09-04 15:22
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:0 
回复 4楼 pauljames
也就是说,指向函数的指针必须是定义成(*p)(),后面的括号是不能少的否则系统就不承认后面   p(x,y)是函数了?
从这段代码中来看,可否这样理解:在C的编译程序里将  记录变量地址的指针和记录函数地址的指针区别对待?指向变量地址的指针是对变量的属性进行操作,而指向函数的指针不但记录了函数的首地址,而且还可以传送函数的实参?
2011-09-04 15:57
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:0 
以前学习VB的时候,讲到优先级()是最高的,比如  (x+y)/(c+d) ,书上总是说括号优先级最高程序先会对括号里面的表达式进行运算,在这里  *p() 应该是考虑其结合性吧???????
2011-09-04 16:17
快速回复:问下有关指针函数的问题啊?
数据加载中...
 
   



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

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