In int (*some)[10] = malloc(sizeof *some);
, some
- это "указатель на массив из 10 int`.
Если вы хотите, чтобы other
была функцией, возвращающей указатель на массив из 10 int,вы можете начать с int (*some)[10];
и заменить some
на то, как будет выглядеть вызов такой функции для получения вашего объявления.
int (*some)[10];
=> int (*other(argument1,argument2))[10];
Вот какон работал в предварительно стандартизированном C. Поскольку стандартизированный C имеет прототипы, вы также заменили бы список идентификаторов аргументов списком типов параметров, например:
int (*other(int argument1, double argument2))[10];
Программа cdecl или веб-сайт cdeclможет помочь вам проверить результат :
$ echo 'explain int (*other(int,double))[10]'|cdecl
declare other as function (int, double) returning pointer to array 10 of int
Большинство людей считают typedef
более читабельным:
typedef int (*pointer_to_an_array_of_10_int)[10];
pointer_to_an_array_of_10_int other(int, double);
//to verify it's a compatible declaration
int (*other(int , double ))[10];