C语言在调用的时候,函数体重新声明形参有什么好处


int add(int param1,int param2)
{
return res = param1+param2;
}

int add(int param1,int param2)
{
int a = param1;
int b = param2;
return res = a + b;
}
在代码效率上有什么区别么?

在函数体重新声明形参的好处是可以避免对传入参数的修改(如传入引用)。

当形参类型为基本类型时,两种方式对结果无影响,但是重新声明可读性更高。
如对形参进行++操作时,人们有可能认为直接改变了外面的实参(其实此时改变不了实参)。
此时若重新声明形参,则避免了人们的这种误解。

就你的代码l来说,没有好处。
偶尔我们需要保留一个形参的副本,避免修改对它产生影响,倒不是说需要改变实参,而是原始的值自己函数内还要用到,那么就再定义一个变量,这也是有的。

另外,一般的C++编译器,经过优化,你的两段代码应该产生相同的输出。

两个代码少一次对象拷贝
但是编译器会有一些返回值优化等

避免修改形参原始值咯。别的没看到啥好处

函数体重新声明行参的好处是可以不用修改行参,比如行参传的是const*p。不可修改的行参就必须对行参从新声明