Как указано, код в функции «ОК»; определение функции ОК. Как указывает abelenky, точка с запятой отсутствует в инициализаторе массива в вызывающем коде.
Ведущее измерение массива по существу игнорируется компилятором. Если у вас есть компилятор C99, вы могли бы написать:
void constructNewArray(int array[static 6][6])
Это говорит компилятору, что он может допустить, что будет по крайней мере, 6 строк в массиве. Я не уверен, когда это действительно приносит пользу, но объект есть.
Насколько яснее, копируются ли данные в массив 10x10 так, как вы хотите. На самом деле вы будете в конечном итоге с массивом инициализирован, как будто бы вы написали:
int newArray[10][10] =
{ { 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, },
{ 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, },
{ 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, },
{ 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, },
// ... all zeroes from here onwards
};
Кроме того, компилятор не будет жаловаться, если вы попытаетесь пройти 10x6 или 2x6 матрицу функции.
В своей основе ваша функция тщательно создает массив и инициализирует его, а затем ничего не делает с ним. Вы не можете вернуть (указатель на) локальный массив. Для этого вам нужно будет сделать динамическое выделение памяти, или вы передадите новый массив в качестве параметра функции, и в этом случае он станет «инициализировать массив 10x10 из массива 6x6». Или вы можете организовать вызов другой функции с построенным массивом изнутри функции constructNewArray()
, но это неправдоподобно для функции с именем «construct». Таким образом, пока не ясно, что ваша функция правильно разработана.
Я бы обсуждал любую настоящую «потребность» в этой жизни. – Blindy
что вы имеете в виду, мужчина? – user2131316
'' void constructNewArray (int ** array) '' может быть то, что вы ищете? – Vorsprung