如何通过使用地址将值分配到二维数组?

时间:2016-11-05 15:47:03

标签: c++

我要重写一个使用指针和放大器的程序。动态数组

但对于二维数组部分,这里有一些问题

这是原始代码:

  for (int index = 0; index < 12; index++)
  {
     sorted[index][0] = sum[index];
     sorted[index][1] = index+1;
 }

我这样重写:

for (int index = 0; index < 12; index++)
{
    *(*sorted+index) = *(sum+index);
    *((*sorted+index)+1) = index + 1;
}

我已经尝试过,问题发生在分配的第一部分 *(*sorted+index)*((*sorted+index)+1)

发生了什么问题?没有错误代码,描述只是:

  

在ass2 Q3.exe中0x00F47379抛出异常:0xC0000005:Access   违规写入位置0xCE13E05C。处理未处理的异常   0x00F47379在ass2 Q3.exe中:0xC0000005:访问冲突写入   位置0xCE13E05C。

1 个答案:

答案 0 :(得分:0)

这两行有问题:

*(*sorted+index) = *(sum+index);
*((*sorted+index)+1) = index + 1;

您需要将sorted指针移动index偏移量,为此您应该编写(sorted + index)现在可以通过*(sorted + index)获取存储在此地址中的值然后通过*(*(sorted + index))获取第一个元素。同样的事情也必须应用于第二行,所以这两行应该是:

*(*(sorted+index)) = *(sum+index);
*(*(sorted+index)+1) = index + 1;

我建议您阅读有关指针算法的更多信息。