首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问!函数指针

2012-11-10 
请教!函数指针代码示例如下:C/C++ codeint maxnum (int x,int y){return(xy?x:y)}void main(){int maxnu

请教!函数指针
代码示例如下:

C/C++ code
int maxnum (int x,int y){    return(x>y?x:y);}void main(){    int maxnum (int x,int y);    int (*p)(int,int);    p=maxnum;    //p=&maxnum;     int result=p(3,5);    int res=(*p)(4,2);    printf("%d\n",result);    printf("%d\n",res);}请问代码的 p=maxnum;和p=&maxnum; 赋值有什么不同,或者说优缺点吧,以及int result=p(3,5);和 int res=(*p)(4,2);有什么优缺点;请帮忙!


[解决办法]
请问代码的 p=maxnum;和p=&maxnum; 赋值有什么不同,或者说优缺点吧,
以及int result=p(3,5);和 int res=(*p)(4,2);有什么优缺点;请帮忙!
....没有什么大区别吧。但是我觉得这个2个好点。p=&maxnum;int res=(*p)(4,2);
[解决办法]
其实这个问题,我上几节课下课后去问了老师,老师说没什么大区别。~
但是总得有一个好点吧。
[解决办法]
个人理解:
p=maxnum, p是maxnum地址,这个好
p=&maxnum,p是指向maxnum的地址
[解决办法]
个人感觉怎么是一样的啊

不过感觉p= maxnum这个好点。。会不会快点。。。?
[解决办法]
函数名与 &函数名等价,
函数指针名(实参表列)与 (*函数指针名)(实参表列)等价。
这是C语言关于函数指针的约定。参见《C与指针》
[解决办法]
maxnum和p是等价的,唯一的区别是调用形式上:
maxnum直接调用:maxnum(),p要取值(*P)()
[解决办法]
细说起来,这是涉及到一个语法上描述形式一致性问题:

数组名[下标表达式] ----表示数组元素引用 与
函数名(实参表列)------表示函数调用 在形式上类似:归纳为 指针()、指针[]--相似

指针传递时,表述也一致:
元素类型指针变量=数组名
函数类型指针变量=函数名

使用指针间接操作时,表述也一致:
指针变量[]
指针变量()

但是对数组而言,有数组指针和元素指针的两种用法:
数组类型指针变量=&数组名
函数类型指针变量=&函数名 ----相似性,但函数只有一种用法
(*数组类型指针变量)[]
(*函数类型指针变量)() ----相似性
[解决办法]
函数名就是一个指针吧
[解决办法]
博大精深

热点排行
Bad Request.