首先,如果之前有人问过,我道歉.我似乎找不到合适的信息.
以下代码不会打印"300",因为我认为它会:
#include <iostream>
int main()
{
int *array;
int *arrayCopy = array;
array = new int[4];
array[0] = 100;
array[1] = 200;
array[2] = 300;
array[3] = 400;
std::cout << arrayCopy[2];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我移动线路,它确实如此
int *arrayCopy = array;
Run Code Online (Sandbox Code Playgroud)
在上面的代码中它后面的行下面.这是为什么?
(PS:我知道有一个内存泄漏,而且std :: vector更好......我只是好奇).
不,当你做int *arrayCopy = array;你捕捉的值array到arrayCopy 在那个时刻,所以如果修改(注意,最初array是指向一些随机的位置,使其指向正确的位置做new)的array 后您复制到arrayCopy随后那些改变不会反映回来arrayCopy.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |