我目前正在学习编程语言的原理。任何人都可以告诉我,通过引用传递会导致别名问题是什么意思吗?
答案 0 :(得分:0)
当多个符号指向同一个内存块时发生混叠。应该避免这种情况以减少混淆。下面是别名的一个简单示例:
#include <iostream>
int main()
{
int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int& alias = array[3]; // alias points to 4th element in the array.
alias = 100; // 4th element in the array set to 100!
// this is best avoided because it is not
// immediately obvious that assigning a value
// to alias will affect the array.
for(std::size_t i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
std::cout << array[i] << std::endl;
return 0;
}
输出:
Success time: 0 memory: 3340 signal:0
0
1
2
100
4
5
6
7
8
9
在这个例子中,显而易见的是alias
指向数组中的第4个元素,但是在大型生产环境中,这会造成严重破坏,并且难以解决错误。
答案 1 :(得分:-2)
通过引用传递,方法可以更改原始数据。