#include <stdio.h>
int main(void)
{
int *p; // int pointer (a pointer to an int)
int **pp; // a pointer to an int pointer (pointer to a pointer to an int)
int (*pa)[]; // a pointer to an array of ints
int (*pf)(); // a pointer to a function returning an int
int *ap[3]; // an array of int pointers (array of pointer to 3 ints)
int *fp(); // a function returning an int pointer
int ***ppp; // a pointer to a pointer to an int pointer
int *aap[3][4]; // an array of arrays of int pointers
int **app[3]; // an array of pointers to int pointers
int (*apa[7])[7]; // an array of pointers to arrays of ints
int (**ppa)[]; // a pointer to a pointer to an array of ints
int (**ppf)(); // a pointer to a pointer to a function returning an int
int *(*pap)[]; // a pointer to an array of int pointers
int (*paa)[3][4]; // a pointer to an array of arrays of ints
int *(*pfp)(); // a pointer to a function returning an int pointer
int (*apf[3])(); // an array of pointers to functions returning an int
int **fpp(); // a function returning a pointer to an int pointer
int (*fpa())[]; // a function returning a pointer to an array of ints
int (*fpf())(); // a function returning a pointer to a function returning an int
return 0;
}
/*
run:
*/