【发布时间】:2016-04-04 12:39:58
【问题描述】:
我知道这在C中是允许的,但我习惯不更新值传递的变量的值。
在我的“编码风格”中,按值传递的参数没有改变。 我的意思是我更喜欢这个:
void func(int var)
{
int locVar = var;
if(something)
{
locVar = locVar/2;
}
// [some stuff using locVar]
}
在此:
void func(int var)
{
if(something)
{
var = var/2;
}
// [some stuff using var]
}
我假设如果启用了寄存器优化,编译器不会生成不同的程序集,但是,有什么好的理由更喜欢这两个代码 sn-ps 之一吗?
【问题讨论】:
-
是的,修改参数更容易出错。同样在调试中,您不会知道参数的原始值是什么,而是它的实际值。你不是因为编译器和/或性能而做#1(正确),而是为了你自己。
-
IMO 更改参数是不错的编码风格。这完全取决于您。
-
@Plouff 使用第一种方法的唯一原因是多次使用原始值。否则不需要引入新的局部变量。函数参数已经是它的局部变量了。
-
@AlexanderVaganov 顺便说一句,函数可以有许多参数。你会在函数中通过引入新的局部变量来重命名它们吗?
-
@VladfromMoscow:我倾向于创建我想要更改的所有参数的副本 - 通常很少。
标签: c++ c function parameters