Я могу инициализировать одномерный массив в c с инициализацией или без инициализации его размера:
int x[] = {1,2,3,4,5};
int y[5] = {1,2,3,4,5};
Но когда я пытаюсь сделать то же самое для двумерного массива, такого как
int x[][] = {{1,2,3},
{4,5,6}};
Я получаю error: array type has incomplete element type
. Та же ошибка возникает, если я объявляю и инициализирую массив в разных строках. Однако я могу инициализировать его, указав размер:
int x[2][3] = {{1,2,3},
{4,5,6}};
В этом нет ошибки. Мой вопрос: можно ли инициализировать многомерный массив без предварительной инициализации его размера? Я спрашиваю об этом, потому что для возможного проекта мне нужно иметь возможность объявлять массивы и инициализировать их позже, а их размер не будет известен при компиляции.
int[x][y]
инициализации, то как вы можете не знать размер? Оставить размер пустым — это просто удобство в первой строке кода — компилятор подсчитывает инициализаторы вместо того, чтобы заставлять вас это делать. Но это все еще известно во время компиляции. - person Barmar   schedule 24.09.2017malloc()
. - person Barmar   schedule 24.09.2017