Привет всем, возник вопрос по массивам:
int n[100];
затем в один момент к этому массиву нужно обратится как к двумерному по индексам:
int **k;// так или как то по другому объявить его
... // как то преобразовать указатель на одномерный массив чтобы он стал двумерным
k[8][8]=1;
Подскажите пожалуйста как выполнить это преобразование?
Здравствуйте, agg, Вы писали:
int main()
{
int n[100] = {0};
int (&n2_1)[10][10] = reinterpret_cast<int (&)[10][10]>(n);
int (*n2_2)[10] = reinterpret_cast<int (*)[10]>(&n);
n2_1[1][1] = 1;
n2_2[2][2] = 2;
return 0;
}
Только учти — все на твоей совести )
Здравствуйте, agg, Вы писали:
agg>Привет всем, возник вопрос по массивам:
agg>agg>int n[100];
agg>
agg>затем в один момент к этому массиву нужно обратится как к двумерному по индексам:
agg>agg>int **k;// так или как то по другому объявить его
agg>... // как то преобразовать указатель на одномерный массив чтобы он стал двумерным
agg>k[8][8]=1;
agg>
agg>Подскажите пожалуйста как выполнить это преобразование?
reinterpret_cast<int (&)[10][10]>(n)[8][8] = 1;
Так сойдёт?
Это конечно шутка. Проще всего преобразовывать двумерный индекс к одномерному вручную.
Здравствуйте, agg, Вы писали:
agg>Привет всем, возник вопрос по массивам:
agg>agg>int n[100];
agg>
agg>затем в один момент к этому массиву нужно обратится как к двумерному по индексам:
agg>agg>int **k;// так или как то по другому объявить его
agg>... // как то преобразовать указатель на одномерный массив чтобы он стал двумерным
agg>k[8][8]=1;
agg>
agg>Подскажите пожалуйста как выполнить это преобразование?
Варианты для с и с++:
//c
int main()
{
int n[100];
int (*v)[10][10] = (int (*)[10][10]) (&n[0]);
(*v)[1][4] = 1;
}
//c++
int main()
{
int n[100];
int (&v)[10][10] = *reinterpret_cast<int (*)[10][10]>(&n[0]);
v[1][4] = 1;
}
Спасибо всем за участие и пожсказки