不确定,为什么这段代码在扫描动态分配的数组时会导致分段错误

时间:2017-01-19 08:26:37

标签: c++ arrays dynamic-arrays

尝试读取动态分配的二维数组。 但有分段错误。找不出原因。根据我的理解,它应该工作

扫描阵列时

。在第一次输入时,它会导致分段错误

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;
}

1 个答案:

答案 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];
  }
 }