C ++:由于'temp [0] [0] = array [0] [0]'不起作用,如何将2D动态数组中的值分配给另一个2D动态数组?

问题描述 投票:-2回答:3
我是C ++的新手,我试图弄清楚如何获取一个名为temp的2D动态数组,以从另一个名为array的2D动态数组中获取值。我无法弄清楚如何将数组中的任何值分配给temp,因为语句“ temp [0] [0] = array [0] [0];”似乎没有将array [0] [0]的值为1分配给temp [0] [0]。相反,在“ temp [0] [0] = array [0] [0]”之后,在将任何值分配给temp [0] [0]之前,temp [0] [0]似乎具有相同的随机数。我试图将temp [0] [0]分配给2,它可以工作。我真的不知道如何将一个2d动态数组中的值精确分配给另一个。无论如何,在此先感谢您对我的帮助!

... //initializing first 2D dynamic array int x=2; int y=2; int** array = new int*[x]; for(int i=0; i<x; i++) array[i] = new int[y]; //initializing second 2D dynamic array int new_x=3; int new_y=3; int** temp = new int*[new_x]; for(int i=0; i<new_x; i++) temp[i] = new int[new_y]; //assigning values array[0][0] = 1; cout << array[0][0] << endl; //output is 1 //before assigning values to temp[0][0] cout << temp[0][0] << endl; //out is a huge random number temp[0][0] = array[0][0]; cout << temp[0][0] << endl; //output is the same huge random number temp[0][0] = 2; cout << temp[0][0] << endl; //output is 2 ...

c++ dynamic-arrays assign
3个回答
0
投票
temp [0] [0]下的内存是动态分配的,因此这就是为什么在分配2之前会从其中获取一些随机(垃圾)内容的原因。分配2时,一直存在的随机垃圾会得到“被有意义的值覆盖,在您的情况下为int类型2

0
投票
我已经尝试运行代码,并且在分配值之后输出确实为1。

0
投票
您发布的代码段应具有应有的准确性:

[第一个cout打印1的值是array[0][0]的值。

[第二cout打印未初始化的temp[0][0],我将其编译为here,在这种情况下,值为0,但可以是任何值。

由于cout的缘故,第三1打印temp[0][0] = array[0][0]

第四cout打印分配给2temp[0][0]的值。

如果您的代码中有问题,除了您试图在第二个cout中打印一个单位化变量的事实,它不在发布的位中。>

© www.soinside.com 2019 - 2024. All rights reserved.