0

我目前正在学习编程语言的原理。谁能告诉我通过引用传递会导致混叠问题是什么意思?

4

2 回答 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 回答