Я хочу написать функцию, возвращающую часть другого массива. Вот как я пытался реализовать его:Почему я не могу назначить массив подмножеству другого массива?
char *subarrayWithRange(char *array, int location, int length)
{
char subarray[length];
subarray = (array + location);
return subarray;
}
Когда я пытаюсь скомпилировать его, clang
дает мне эту ошибку:
error: array type 'char [length]' is not assignable
Видимо, я не могу присвоить массив к югу от массива другой массив. Но это работает, когда я определяю подмассив как указатель:
char *subarrayWithRange(char *array, int location, int length)
{
char *subarray;
subarray = (array + location);
return subarray;
}
Теперь, однако, я не могу определить длину подмассива. Это вещь на языке C? Могу ли я обойти это как-то?
Вы должны инициализировать массив. Или назначьте его отдельные элементы. –
посмотреть на этот вопрос [ссылка] (http://stackoverflow.com/questions/2137361/what-is-the-best-way-to-create-a-sub-array-from-an-exisiting-array -in-c) – Android
Вы можете определить свою собственную структуру Array и затем вернуть ее. Например, в APR вы создаете массив с чем-то вроде этого: 'apr_array_header_t * arr = apr_array_make (пул, 0, sizeof (const char *));' Сделайте это аналогичным образом для своей собственной структуры. – Brandin