在函数内修改由值’传递的参数并将它们用作局部变量

我已经看到了一些代码,其中通过值传递给函数的参数被修改或分配了一个新值,并且被用作局部变量。

这样做好吗? 这样做是否存在任何陷阱,或者这样编码是否可以?

本质上,函数的参数是局部变量,因此这种做法原则上并不坏。

另一方面,这样做可能会导致维护问题。 如果另一个程序员稍后出现,他可能希望变量保持传入的值,并且更改将导致错误。

重用变量的一个理由是误导了内存使用效率的概念。 实际上,它无法提高效率,并且可以降低效率。 原因是编译器可以自动检测在两个不同的时间对两个不同的变量使用相同的寄存器是否有用,如果更好则会这样做。 但程序员不应该为编译器做出决定。 这将限制编译器可以做出的选择。

最安全的做法是在需要新值时使用新变量,并依赖编译器使其变得高效。

没问题,我能想到的。 参数将被放置在当前堆栈帧中或寄存器中,就像任何其他局部变量一样。 但是,请确保参数是按值传递的。 特别是,数组通过引用传递。