正在尝试读取动态分配的二维数组。 但有段错误。找不到原因。据我了解,它应该可以工作
同时扫描阵列。在第一次输入时,它会导致段错误
class DiognalSum
{
public :
int **a;
public :
DiognalSum(int n)
{
int **a = new int*[n];
for(int i = 0; i < n; i++)
{
a[i] = new int[n];
}
}
public :
void getArray(int n)
{
int input;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin >> input;
a[i][j] = input; // segmentation fault is here
}
}
}
void printArray(int n)
{
cout << "Out " << endl;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout << a[i][j];
}
cout << endl;
}
}
};
int main()
{
DiognalSum d(3);
d.getArray(3);
d.printArray(3);
return 0;
}
最佳答案
DiognalSum(int n)
{
//int **a = new int*[n]; // <-- you have locally declared `int **a`
a = new int*[n]; // <-- correct would be to use DiognalSum::a
for(int i = 0; i < n; i++)
{
a[i] = new int[n];
}
}
关于c++ - 不确定,为什么这段代码在扫描动态分配的数组时导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737064/