#include <stdio.h>
#define PRINT(x) printf("%-24s: %zu\n", #x, sizeof(x))
int main(void)
{
// 포인터의 배열을 가리키는 포인터를 반환하는 함수 포인터의 배열을 가리키는 포인터
// declare foo as pointer to array 17 of pointer to function (void) returning pointer to array 23 of pointer to char
char *(*(*(*foo)[17])(void))[23];
PRINT( foo );
PRINT( *foo );
PRINT( (*foo)[0] );
PRINT( (*foo)[0]() );
PRINT( *((*foo)[0]()) );
PRINT( (*((*foo)[0]()))[0] );
PRINT( *((*((*foo)[0]()))[0]) );
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFBSSU5UKHgpIHByaW50ZigiJS0yNHM6ICV6dVxuIiwgI3gsIHNpemVvZih4KSkKCmludCBtYWluKHZvaWQpCnsKCS8vIO2PrOyduO2EsOydmCDrsLDsl7TsnYQg6rCA66as7YKk64qUIO2PrOyduO2EsOulvCDrsJjtmZjtlZjripQg7ZWo7IiYIO2PrOyduO2EsOydmCDrsLDsl7TsnYQg6rCA66as7YKk64qUIO2PrOyduO2EsAoJLy8gZGVjbGFyZSBmb28gYXMgcG9pbnRlciB0byBhcnJheSAxNyBvZiBwb2ludGVyIHRvIGZ1bmN0aW9uICh2b2lkKSByZXR1cm5pbmcgcG9pbnRlciB0byBhcnJheSAyMyBvZiBwb2ludGVyIHRvIGNoYXIKCWNoYXIgKigqKCooKmZvbylbMTddKSh2b2lkKSlbMjNdOwoKCVBSSU5UKCAgICAgICAgZm9vICAgICAgICAgICAgICk7CglQUklOVCggICAgICAgKmZvbyAgICAgICAgICAgICApOwoJUFJJTlQoICAgICAgKCpmb28pWzBdICAgICAgICAgKTsKCVBSSU5UKCAgICAgICgqZm9vKVswXSgpICAgICAgICk7CglQUklOVCggICAgKigoKmZvbylbMF0oKSkgICAgICApOwoJUFJJTlQoICAgKCooKCpmb28pWzBdKCkpKVswXSAgKTsKCVBSSU5UKCAqKCgqKCgqZm9vKVswXSgpKSlbMF0pICk7CgoJcmV0dXJuIDA7Cn0K