将二维数组传递给结构(C ++)

时间:2014-04-14 11:49:31

标签: c++ arrays pointers multidimensional-array

我遇到的问题包括指针和二维数组。

我有一个结构,看起来像这样:

typedef struct {
    int row;
    int col;
    int **a;
} TEST;

现在我想将该类型的对象用于其他功能。但是我在将二维数组传递给该类型的对象时遇到了问题。

例如我试过这个:

int main(int argc, char * argv[]){
    //Just to fill an array with some integers
    int rows = 3;
    int cols = 3;

    int a[rows][cols];

    srand(time(NULL));

    for (int x = 0; x < rows; x++){
        for (int y = 0; y < cols; y++){
            a[x][y] = rand() % 10 + 1;
        }
    }

    TEST * t = (TEST *) calloc(1,sizeof(TEST));
    t->row = rows;
    t->col = cols;
    t->a = a;

    return 0;
}

我该如何正确地做到这一点?

我很感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果需要动态分配TEST对象,则可以执行以下操作:

int main(int argc, char * argv[])
{
    //Just to fill an array with some integers
    int rows = 3;
    int cols = 3;

    TEST* t = new TEST;
    t->row = rows;
    t->col = cols;
    t->a = new int*[rows];
    for(int i = 0; i < rows; i++)
       t->a[i] = new int[cols];    

    srand(time(NULL));

    for (int x = 0; x < rows; x++){
        for (int y = 0; y < cols; y++){
            t->a[x][y] = rand() % 10 + 1;
        }
    }

    return 0;
}