提问人:solopolo 提问时间:1/30/2021 更新时间:6/5/2023 访问量:2121
在 C++ 中为实际参数和形式参数提供相同的变量名称会产生任何问题吗?
Can giving same variable names to actual and formal parameters in C++ create any problems?
答:
0赞
Bennett.Yang
1/30/2021
#1
我不确定您是否在问是否可以对实际参数和形式参数使用相同的名称。据我所知,无论您选择按值传递还是按引用传递,它都不会造成任何问题。形式参数名称的作用域是它们的函数(假设它的名称是 ),实际参数名称的作用域是调用函数 f 的函数。所以他们不会互相干扰。f
1赞
Igor G
1/30/2021
#2
假设示例:
void foo(int& arg1, int arg2)
{
}
void bar()
{
int arg1 = 4;
int arg2 = 2;
foo(arg1, arg2);
}
不,这样的代码不会造成任何问题。这些变量的范围是不相交的,它们都不能潜在地隐藏另一个变量(或者你的意思是其他一些潜在的问题?
2赞
user5550963
1/30/2021
#3
如果你在谈论图片中的东西,简单的答案是这根本不重要。在“按值传递”的情况下,调用函数的值被复制到被调用函数的参数地址。
说到参考文献,这里有一句话:
引用与原始变量共享相同的内存地址,但也占用堆栈上的一些空间,而指针在堆栈上有自己的内存地址和大小。
因此,为了简化答案,参数和局部变量名称并不重要,因为编译器将它们转换为地址。从上面可以看出,即使是引用也必须存储被引用变量的地址。
我的建议是阅读这篇文章。从地址的角度来考虑变量或参数,而不是从它们的名称的角度来考虑。
0赞
Ibtida Bin Ahmed
6/5/2023
#4
对你的第一个问题的直接回答是肯定的,你可以这样做 但它会降低代码的可读性,并在您的脑海中或练习本中编译代码时造成混乱,因为建议检查程序(如果可能)以在没有机器的情况下使用一些测试用例进行编译和执行,即编译器在您的脑海中或笔记本上。 (从ICPC全球决赛入围者的角度来看) 因此,请避免使用相同的名字。
上一个:为什么函数列表数据没有收到
下一个:对象传递引用与值 [已关闭]
评论