Я уже понял, что нельзя присвоить массивы массивам в c.Оператор типа:
int array1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int array2[10];
int * array3 = array;
Действителен, но последовательный оператор:
array2 = array1;
Нет, так как массивы затухают в указатели.Я нахожу это неудовлетворительным, так как в случае, если у меня есть функция, которая создает массив:
int * arrcreate() {
static int funcarray[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
return funcarray
}
И я вызываю это в своей основной подпрограмме, я бы хотел обработать массив, а не указатель.Конечно, я мог бы в своей основной программе создать массив и заполнить его вручную:
int main() {
int array[10];
int i;
int * p = arrcreate();
for(i = 0; i<10, i++) {
array[i] = p[i];
}
}
Но так как я ЗНАЮ, что при инициализации массива можно выполнять присваивание вида:
int array1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Я хотел бы спросить, можно ли также назначить массив с указателем на массив.
Эквивалентный вопрос будет: Имея указатель на массив и зная размер массива, на который указывает указатель, можно ли на лету создать и инициализировать новый массив, который в любом случае является копией старого?