关于指针作为函数参数的传递问题

在做计算机图形学的复合变换中,由于储存需要使用了二位数组作为矩阵,所以不可避免的用到了二维指针。可能是当时指针这里走马观花的学了一下,所以在写代码的时候也碰到了虽然简单但是一时搞不懂还是让人很抓狂的小问题。


首先将二维指针**r作为3*1的输出矩阵,在经过了功能函数的运算后r的值被更新。因为要做连续的变化,所以将r作为参数传递到连续变化的功能函数中去,问题也就由此而来。

当r作为参数直接传入函数后,在函数体里的计算是正确的,但在主函数里的值却没有改变

问题在于当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。因此在功能函数中对r作的更新是对r的副本进行的更新而不是对指针本身,指针本身的指向还保留着传入之前的原值。

解决的办法也很简单,将原来的值传递改为引用传递,就可以实现在功能函数里对原值进行更新。

例如func(double **r),改为func(double **&r)。

原创文章 5 获赞 7 访问量 1727

猜你喜欢

转载自blog.csdn.net/Boooooil/article/details/89057361