请教!函数指针代码示例如下:C/C++ codeint maxnum (int x,int y){return(xy?x:y)}void main(){int maxnu
请教!函数指针
代码示例如下:
C/C++ codeint 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)()
[解决办法]细说起来,这是涉及到一个语法上描述形式一致性问题:
数组名[下标表达式] ----表示数组元素引用 与
函数名(实参表列)------表示函数调用 在形式上类似:归纳为 指针()、指针[]--相似
指针传递时,表述也一致:
元素类型指针变量=数组名
函数类型指针变量=函数名
使用指针间接操作时,表述也一致:
指针变量[]
指针变量()
但是对数组而言,有数组指针和元素指针的两种用法:
数组类型指针变量=&数组名
函数类型指针变量=&函数名 ----相似性,但函数只有一种用法
(*数组类型指针变量)[]
(*函数类型指针变量)() ----相似性
[解决办法]函数名就是一个指针吧
[解决办法]博大精深