尝试读取动态分配的二维数组。 但有分段错误。找不出原因。根据我的理解,它应该工作
扫描阵列时。在第一次输入时,它会导致分段错误
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;
}
答案 0 :(得分:4)
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];
}
}