| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2788 人关注过本帖
标题:[求助]关于函数指针
只看楼主 加入收藏
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
我不清楚 (*fun) 和 &fun 爲甚麽這樣寫, 但我知道聲明函數指針時應該怎麽寫, 也知道怎麽用, 這就足夠了.

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-06 07:05
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
"那个声称&fun的值和fun一样的人是在胡说八道"他们的意义自然是不一样的,他是说他们"的值"是一样的.
我也不清楚这是为什么,所以做了实验,的确是如此,你不信也可以试试我在4楼说的话的例子.

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-06 09:00
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
[CODE]#include <iostream>
using namespace std;

void f(int n) { cout<<n<<endl; }
void (*fp)(int);

int main()
{
int m = 100;
fp = f;

fp(m); //一种看法认为函数名是函数的指针,所以函数指针应该和函数名有同样的行为。
(*fp)(m); //另一种看法认为fp是指针,*fp代表函数。 在c++这两种都正确,虽然是矛盾的

fp = &f; //如果上一句正确,那么也就可以这样写

system("pause");
return 0;
}[/CODE]

2006-08-06 09:53
触电
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-7-26
收藏
得分:0 
2种学派的不同理解罢了
没多大意义
2006-08-06 10:27
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
wfpb,

你的那个 typedef 有点把我搞糊涂。

很多书上对于 function pointer 都有详细阐述的, 我实在不想再写一大段, 如果一定有这个必要的话。 我建议你去看一些比较表述精确的书籍, 最好是原版的。

woodhead 13楼的代码完全正确。

穆扬, fp = f ; 和 fp = &f; 确实是等价的。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-08-06 14:29
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
我只是想把他说的抽象点,呵呵
所以才用那些TYPE来代替类型.parameters代表参数,个数未确定

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-06 16:53
pulf
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2006-7-31
收藏
得分:0 
看来我要多看书阿。

2006-08-07 21:01
shenshao67
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-11
收藏
得分:0 

哪里有编程的视频?


四海皆兄弟! 
2006-08-10 15:16
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-16 10:43
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

在ANSI C中的“函数的指针”一节里:
可以直接将fun赋给函数指针,也可以将&func赋给函数指针,但是后者的赋值方法在较老的编译器中认为是非法的,因为编译器认为fun是地址,所以不允许,但是如果是支持ASNI C的编译器,则都认为这种赋值合法
所以,结论是,支持ASNI C的编译器中,&func是合法的


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-16 11:11
快速回复:[求助]关于函数指针
数据加载中...
 
   



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

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