c++ primter中关于函数指针的
应该是 7.9.2节 函数指针的初始化 和赋值
里面说
象 数组名会被解释成 指向首元素的指针一样
函数名会被解释成 这个函数的指针
但是 里面提到
“将取地址操作符作用在函数名上也能产生指向该函数类型的指针因此lexicoCompare
和&lexioCompare 类型相同指向函数的指针可如下被初始化
int (*pfi)( const string &, const string & ) = lexicoCompare;
int (*pfi2)( const string &, const string & ) = &lexicoCompare;”
这个就不太懂了 难道 lexicoCompare 与 &lexicoCompare 是一样的?
数组可不是这样的啊?
请高手指点一下?????
问题点数:10、回复次数:13Top
1 楼taodm((不能收CSDN社区短信息,请莫浪费精力))回复于 2006-11-15 16:51:13 得分 0
C++Primer不是说了嘛,对函数指针,2者一样。
对数组,当然不一样,你会编译不通过的。
C/C++就这么规定的!Top
2 楼warptenking(莫名其妙的人)回复于 2006-11-15 16:57:18 得分 0
竟然有发广告的。。。。。
搞什么Top
3 楼weixing979(★★★闪电侠★★★)回复于 2006-11-15 16:58:58 得分 0
函数名就是指向函数的地址Top
4 楼lann64(昆仑大鹏@迦楼罗)回复于 2006-11-15 17:39:09 得分 0
这个是C语言的一个缺点,很容易使人产生误解。
对于一个函数名fun,对它取地址的得到的函数指针pfun跟fun一样,这跟普通指针的语法也不一样(毕竟,取指针的地址得到的是指向指针的指针)。
对一个函数指针你可以(*pfun)()调用函数,也可以pfun()调用函数。
可以用函数名这样调用fun(),也可以(*fun)()调用函数。
整个一混乱。这个缺点也被带到C++里了。
可以从这个程序看这些用法。
#include <iostream>
using namespace std;
void fun(void)
{
cout<<"函数调用"<<endl;
}
int main()
{
void (*pfun)();
void (*pfun1)();
pfun=fun;
pfun1=&fun;
if((pfun1==pfun)&&(pfun1==fun))
cout<<"全都相等"<<endl; //显示全都相等
else
cout<<"不全相等"<<endl;
pfun1(); //显示函数调用
(*pfun1)(); //同上
fun(); //同上
(*fun)(); //同上
}Top
5 楼warptenking(莫名其妙的人)回复于 2006-11-16 11:35:40 得分 0
太好了 加楼罗王
学到了。。。。Top
6 楼cime63(流浪的孩子)回复于 2006-11-16 12:05:42 得分 0
昨天刚看到第7章,说不定会用到,记号Top
7 楼pressman(大苯熊)回复于 2006-11-16 12:52:03 得分 0
我感觉是不是用法类似于字符数组的指针。
char str[]="abcdef";
char *p=str;
cout<<p<<endl;
cout<<str<<endl;Top
8 楼lann64(昆仑大鹏@迦楼罗)回复于 2006-11-16 13:36:54 得分 0
跟字符数组或指向字符的指针还不一样。你对字符数组名或指向字符的指针取地址,得到的是二级指针,但对函数名取地址,得到的还是它自己。Top
9 楼hzjtyh(小母牛背跃式跳高)回复于 2006-11-16 13:51:52 得分 0
楼上诸位解释的这么清楚
我只能接分了么 呵呵
同意 lann64(昆仑大鹏@迦楼罗)Top
10 楼zmzbs123(小阵阵)回复于 2006-11-16 15:37:03 得分 0
When we use a function name without calling it, the name is automatically treated as a pointer to a functionTop
11 楼zmzbs123(小阵阵)回复于 2006-11-16 15:48:22 得分 0
原来如此呀,函数名的地址和函数名是同样的效果Top
12 楼ahking(aspire)回复于 2006-11-17 09:35:54 得分 0
我也在看此书,但是好像没有看到介绍事件的内容啊?Top
13 楼ahking(aspire)回复于 2006-11-28 20:35:09 得分 0
?Top




