Как вы представили - совсем нет ... Вы можете иметь:
int array[][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
Если вам все еще нужны a и b, вы можете использовать их в качестве указателей:
int* a = array[0];
int* b = array[1];
или чуть ближе к исходной попытке: ссылки на массив:
int(&a)[3] = array[0];
int(&b)[3] = array[1];
Таким образом, вы все еще можете e. г. применить sizeof
к a
и b
...
Или наоборот: создайте массив указателей
int a[] = { 1,2,3 };
int b[] = { 4,5,6 };
int* array[] = { a, b };
Все эти решения, представленные до сих пор, имеют общее, что и a, и array [0] имеют доступ к одним и тем же данным. Если вы на самом деле хотите иметь две независимые копии вместо этого, то нет никакого способа скопировать данные из одной в другую, e. г. через std::copy
.
Если вы переключитесь с необработанного массива на std::array
, то у вас может напрямую иметь этот тип инициализации (с копиями):
std::array<int, 3> a;
std::array<int, 3> b;
std::array<std::array<int, 3> 2> array = { a, b };