二维数组和赋值对象

时间:2016-03-10 16:51:08

标签: c++ arrays pointers

我试图创建二维数组并将对象分配到其中。重要的是,我想用POINTERS做到这一点。我想这样做:

  1. 创建指向指针数组的指针。
  2. 有数组指针我在内存中创建了下一个10个单元格,例如存储单个对象。
  3. 这是我的代码:

    我创建了用于存储指针数组地址的基本指针:

    arrayOfPointsOnTheMap = new SpecialPoint*[size];
    

    接下来我初始化这个数组:

    for (int i = 0; i < szer; i++) {
        arrayOfPointsOnTheMap[i] = new SpecialPoint[wys];
    }
    

    然后在内存中创建单元格:

    SpecialPoint *pontInTable;
    
    for (int i = 0; i < szer; i++) {
        pontInTable = arrayOfPointsOnTheMap[i];
    
        for (int j = 0; j < wys; j++) {
            pontInTable[j] = new SpecialPoint();
        }
    }
    

    最后我想将对象分配给这个新创建的数组:

    #include <stdio.h>
    #include<string.h>
    int main(){
      char string[100];
      int i;
      scanf("%s",string);
      for(i=0;i<strlen(string);i++){
           string[i]=string[i]-32;
      }
      printf("%s",string);
      return 0;
    }
    

    但是在尝试创建新对象int数组时遇到错误。我有点困惑。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

你想在作业部分做什么不是很清楚所以我会根据我的最佳猜测来回答。我们说你的课程如下:

class SpecialPoint 
{
    public:
    int x;
    int y;
    SpecialPoint(int xx, int yy)
    {
        x=xx;
        y=yy;
    }
    SpecialPoint()
    {
        x=0;
        y=0;
    }
};

然后,您可以使用以下代码创建和初始化您的二维数组:

    int size = 4;
    int wys = 3;
    SpecialPoint** arrayOfPointsOnTheMap  = new SpecialPoint*[size];
    for(int i = 0; i < size; i++)
    {
        arrayOfPointsOnTheMap[i] = new SpecialPoint[wys];
    } // you have your array at that point

    SpecialPoint fakePoint(5,6); // create a special point


    for(int i=0; i < size; i++)
    {
        for(int j=0; j < wys; j++)
        { // Assign your special point instance to all the array cells.
            arrayOfPointsOnTheMap[i][j] = fakePoint;
        }
    }

完成数组后,不要忘记使用以下方法清理内存:

for(int i = 0; i < size; i++) {
    delete [] arrayOfPointsOnTheMap[i];
}

delete [] arrayOfPointsOnTheMap;
祝你好运!