2D数组C++运算符[]

2D array C++ operator []

本文关键字:运算符 C++ 数组 2D      更新时间:2023-10-16

我有一个2D数组,当我想给一个单元格赋值时,它会给相反的单元格赋值。

这里有一个例子:

g.tab = new MyType*[g.width];
for(int i=0;i<g.height;i++) {
    g.tab[i] = new MyType;
}
const int x = 0;
const int y = 1;    
g.tab[x][y].b = true;

g.tab[0][1]和g.tab[1][0]处的值将相同。

我不知道为什么。。。

谢谢你的帮助。

您正在分配width指针;则为它们中的CCD_ 2分配单个元素。您可能想为每个元素分配height元素:

for (size_t i = 0; i < g.width; ++i) {
    g.tab[i] = new MyType[g.height];
}

我想你的意思是:

for(int i=0;i<g.width;i++)
g.tab[i] = new MyType[g.height];

通过编写g.tab[i] = new MyType;,您没有分配2D数组。

根据heigthi<g.heigth;条件可能会编译但无法正常工作,或者导致某种内存访问冲突。