我目前正在学习编程语言的原理。谁能告诉我通过引用传递会导致混叠问题是什么意思?
问问题
1235 次
2 回答
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 个元素,但在大型生产环境中,这可能会造成严重破坏并产生难以解决的错误。
于 2013-09-30T21:15:05.597 回答
-2
通过引用传递,方法可以改变原始数据。
于 2013-09-30T19:50:20.583 回答