做一些赋值,这是一个在动态分配的2D数组中计算负数的函数:
void numberOfNegs(int** arrayPointer, int n) {
int counter{ 0 };
for (int i{ 0 }; i < n; i++){
for (int j{ 0 }; j < n; j++){
if (arrayPointer[i][j] < 0) {
counter++;
}
}
}
似乎对我来说是合法的,但是调试器会抛出这个错误:
* .exe中0x00C25D9A处的未处理异常:0xC0000005:Access 违规阅读地点0xCDCDCDCD。
请帮助
以下是关于我如何投放它的更多代码
std::cin >> x;
int** theMatrix = new int*[x];
for (int i{ 0 }; i < x; i++){
theMatrix[x] = new int[x];
}
std::cout << "Please enter a matrix " << x << std::endl;
for (int i{ 0 }; i < x; i++) {
for (int j{ 0 }; j < x; j++) {
std::cin >> theMatrix[x][x];
}
}
numberOfNegs(theMatrix, x)
答案 0 :(得分:2)
您的初始化问题出在此处:
for (int i{ 0 }; i < x; i++){
theMatrix[x] = new int[x];
}
您使用x
作为数组索引,而您(可能)意味着i
。您当前的代码只为最后一个元素x
次创建一个数组。将其更改为:
for (int i{ 0 }; i < x; i++){
theMatrix[i] = new int[x];
}
您可能还想调整此代码:
for (int i{ 0 }; i < x; i++) {
for (int j{ 0 }; j < x; j++) {
std::cin >> theMatrix[x][x];
}
}
要:
for (int i{ 0 }; i < x; i++) {
for (int j{ 0 }; j < x; j++) {
std::cin >> theMatrix[i][j];
}
}