Member 13657785 Ответов: 1

Как определить массив функций, возвращающих массив функций в языке Си?


привет , мне нужно завершить код, чтобы эта строка работала.
f[0]()[0]();


как я могу определить f ?

Что я уже пробовал:

вот кое-что, что я пытался, но не знаю, чтобы продолжить

void(*a)(*f)(...)

1 Ответов

Рейтинг:
8

CPallini

[обновление]
Без typedef, соответствующий запросу OP:

#include <stdio.h>

void f(){ printf("hello\n"); }
void (*pf[])()={ f };
void (**g())(){ return pf; }
void (**(*pg[])())() = { g };

int main()
{
  pg[0]()[0]();
}

[/обновление]



Настолько безумно, насколько это возможно...
#include <stdio.h>

int add(int a, int b){return a+b;}
int sub(int a, int b){return a-b;}

typedef int (* INT_FUN)(int a, int b);

INT_FUN f[] = {add, sub};
INT_FUN g[] = {sub, add, sub};

INT_FUN * af (){ return f; }
INT_FUN * ag (){ return g; }

typedef INT_FUN * ( *ARR_FUN )();

int main()
{
  ARR_FUN a[] = {af, ag}; // array of functions returning array of functions...

  printf("%d\n", a[1]()[0](10,5)); // calls 'sub(10,5)'

  return 0;
}


Richard MacCutchan

+5 за то, что заставил меня смеяться.

CPallini

Спасибо! :-)