int (*magic( int (*arg[])(int, int) ))(int, int)
{
int (*tmp)(int, int);
tmp = arg[0];
arg[0] = arg[1];
arg[1] = arg[2];
arg[2] = arg[3];
arg[3] = tmp;
return tmp;
}
Post #59
204
EBFE: software internals Вот и решение: int (*magic(int (*arg[4])(int, int)))(int, int) { static int idx = 0; int _i = idx; return arg[idx = (idx + 1) % 4, _i]; }
Мой хороший товарищ заметил, что в этом решении используется static - типо, глобальная переменная. Я считаю, что static переменные в функции располагаются действительно там же где и глобальные переменные, однако с точки зрения языка они ими не являются - в общем дискуссионая тема. Однако он же предложил очень интересное решение без использования static: