我遇到的问题包括指针和二维数组。
我有一个结构,看起来像这样:
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;
}
我该如何正确地做到这一点?
我很感谢你的帮助。
答案 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;
}