如何解决在 C++ 中为实际和形式参数提供相同的变量名称会产生任何问题吗?
在通过引用传递时,给被调用函数中的形参命名与调用函数中的实参同名会产生任何问题吗?
另外,按值传递会有什么不同吗?
解决方法
假设示例:
void foo(int& arg1,int arg2)
{
}
void bar()
{
int arg1 = 4;
int arg2 = 2;
foo(arg1,arg2);
}
不,这样的代码不会造成任何问题。这些变量的范围是不相交的,它们都不能潜在地隐藏另一个(或者你的意思是其他一些潜在问题?)。
,我不确定您是否在问是否可以对实际参数和形式参数使用相同的名称。据我所知,无论您选择按值传递还是按引用传递,它都不会引起任何问题。形参名字的作用域是它们的函数(假设它的名字是f
),而实参名字的作用域是调用函数f的函数。所以他们不会互相干扰。
如果你在谈论图片中的东西,简单的答案是它根本不重要。在“传值”情况下,调用函数的值被复制到被调用函数的参数地址。
说到参考文献,这里引用一句:
引用与原始变量共享相同的内存地址,但也会占用堆栈上的一些空间,而指针在堆栈上有自己的内存地址和大小。
所以为了简化答案,参数和局部变量名称并不重要,因为编译器会将它们转换为地址。从上面可以看出,即使是引用也必须存储被引用变量的地址。
我的建议是read this。并根据地址而不是名称来考虑变量或参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。