几个疑问请大家帮忙解答一下
如下所示,有两个函数的声明:
(1)[code=C/C++][/code]void CutBoundaryRec (const Point3d & pmin, const Point3d & pmax,GradingBox * box);
(2)[code=C/C++][/code]void FindInnerBoxesRec ( int (*inner)(const Point3d & p),GradingBox * box);
在1中,前两个形参用的是赋址运算符,而第三个则用的是指针运算符,这两种方式有啥区别呢?我的理解里是差不多的。
在2中,函数的第一个形参怎么那么奇怪啊,用了两个括号,第二个括号我能看懂,跟普通的引用一样,那第一个括号在这里是用来干什么呢?
以上两个问题,请高手帮忙解答一下,谢谢。
[解决办法]
第一个中指针和引用函数参数入栈有差别
第二个感觉很奇怪,应该是强转,p的类型不能直接强转成int,所以通过中间类型inner进行强转,先转换成*inner再转换成int(//这个是猜测,楼主可以试着自己验证下)
[解决办法]
第一个,引用相当于并且本质上就是一个常量指针,注意是相当于和本质上,扯什么两者写法不一样的一边去
区别?引用写起来方便,引用始终如一,引用不能为空,指针可以移动,指针可以为空,视具体需求和个人习惯决定用哪个
第二个,那是一个函数指针的声明,去查函数指针是什么东西吧
[解决办法]
在1中,前两个形参和第三个形参有很大的不同吧,第三个参数是解引用指针。
在2中,怀疑第一个括号是强制类型转换。。
[解决办法]