二维数组C ++运算符[]

时间:2013-12-04 13:58:26

标签: c++ arrays

我有一个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]的值将相同。

我不知道为什么......

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

你正在分配width个指针;然后为height分配一个元素。您可能希望为每个元素分配height个元素:

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

答案 1 :(得分:0)

我认为你的意思是:

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

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

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