【发布时间】:2013-12-13 19:47:00
【问题描述】:
每个人都知道 C/C++ 函数参数是按值传递的。那么为什么有些人坚持正确的风格是在修改函数参数之前制作一个本地副本呢?例如,他们会写:
void baz(unsigned int *ptr)
{
unsigned int *lPtr = ptr;
for(int i = 0; i < 10; i++)
{
foo(*lPtr++);
}
}
代替:
void baz(unsigned int *ptr)
{
for(int i = 0; i < 10; i++)
{
foo(*ptr++);
}
}
似乎第二种方式更容易阅读,因为它少了一个变量。
【问题讨论】:
-
我也不明白为什么人们会这样做。也许那些来自 C++ 的人已经习惯了意外传递和修改引用的风险......呃,不太好。
-
也许可以在任何核心转储文件中轻松看到函数参数的原始值?我真的不知道。
-
这些人是谁?我同意你的看法。
-
这里也一样...那我猜不是每个人都...
-
我曾经看过一门“学习 C”课程的笔记,它教授了一种高度公式化的方法,其中包括这种东西。对我来说感觉像是在浪费空间。
标签: c++ c coding-style pass-by-value