#include #include void print1() { printf("1 "); } void print0() { printf("0 "); } int main(void) { void (***tab)(); tab = (void ***) malloc(sizeof(void(**)()) * 10); for (int i = 0; i < 10; i++) { *(tab + i) = (void **) malloc(sizeof(void(*)()) * 10); } for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i == j) *(*(tab + i) + j) = print1; else *(*(tab + i) + j) = print0; } } for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { (*(*(tab + i) + j))(); } printf("\n"); } for (int i = 0; i < 10; i++) { free(*(tab + i)); } free(tab); }