我要重写一个使用指针和放大器的程序。动态数组
但对于二维数组部分,这里有一些问题
这是原始代码:
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。
答案 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;
我建议您阅读有关指针算法的更多信息。