#include <stdio.h>
typedef int (*FUNC_PTR_T)(void);
typedef struct foo_type { FUNC_PTR_T array[3]; } FOO_T;
int foo1(void) { return 1; }
int foo2(void) { return 2; }
int foo3(void) { return 3; }
FOO_T getFuncs(void)
{
FOO_T r;
r.array[0] = foo1;
r.array[1] = foo2;
r.array[2] = foo3;
return r;
}
int main(void)
{
FOO_T r = getFuncs();
int i;
for (i=0; i<3; i++) {
printf("r.array[%d] = %d\n", i
, r.
array[i
]()); // printf("r.array[%d] = %d\n", i, (*r.array[i])());
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIGludCAoKkZVTkNfUFRSX1QpKHZvaWQpOwp0eXBlZGVmIHN0cnVjdCBmb29fdHlwZSB7IEZVTkNfUFRSX1QgYXJyYXlbM107IH0gRk9PX1Q7CgppbnQgZm9vMSh2b2lkKSB7IHJldHVybiAxOyB9CmludCBmb28yKHZvaWQpIHsgcmV0dXJuIDI7IH0KaW50IGZvbzModm9pZCkgeyByZXR1cm4gMzsgfQoKRk9PX1QgZ2V0RnVuY3Modm9pZCkKewoJRk9PX1QgcjsKCXIuYXJyYXlbMF0gPSBmb28xOwoJci5hcnJheVsxXSA9IGZvbzI7CglyLmFycmF5WzJdID0gZm9vMzsKCXJldHVybiByOwp9CgppbnQgbWFpbih2b2lkKQp7CglGT09fVCByID0gZ2V0RnVuY3MoKTsKCWludCBpOwoJZm9yIChpPTA7IGk8MzsgaSsrKSB7CgkJcHJpbnRmKCJyLmFycmF5WyVkXSA9ICVkXG4iLCBpLCByLmFycmF5W2ldKCkpOwoJCS8vIHByaW50Zigici5hcnJheVslZF0gPSAlZFxuIiwgaSwgKCpyLmFycmF5W2ldKSgpKTsKCX0KCQoJcmV0dXJuIDA7Cn0K