I presented the Right-Left Rule in the C Programming Guide book (1982) and there have been lots of examples written since then. This is a list of example you might use to test your understanding of the Rule, including some illegal data definitions:
Here are some legal and illegal examples:
Jack, W8TEE
inti; // an int
int*p; // an int pointer (ptr to an int)
inta[]; // an array of ints
intf(); // a function returning an int
int**pp; // a pointer to an int pointer (ptr to a ptr to an int)
int (*pa)[]; // a pointer to an array of ints
int (*pf)(); // a pointer to a function returning an int
int*ap[]; // an array of int pointers (array of ptrs to ints)
intaa[][]; // an array of arrays of ints
intaf[](); // an array of functions returning an int (ILLEGAL)
int*fp(); // a function returning an int pointer
intfa()[]; // a function returning an array of ints (ILLEGAL)
intff()(); // a function returning a function returning an int (ILLEGAL)
int***ppp; // a pointer to a pointer to an int pointer
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)[][]; // a pointer to an array of arrays of ints
int (*paf)[](); // a pointer to a an array of functions returning an int (ILLEGAL)
int*(*pfp)(); // a pointer to a function returning an int pointer
int (*pfa)()[]; // a pointer to a function returning an array of ints (ILLEGAL)
int (*pff)()(); // a pointer to a function returning a function returning an int (ILLEGAL)
int**app[]; // an array of pointers to int pointers
int (*apa[])[]; // an array of pointers to arrays of ints
int (*apf[])(); // an array of pointers to functions returning an int
int*aap[][]; // an array of arrays of int pointers
intaaa[][][]; // an array of arrays of arrays of ints
intaaf[][](); // an array of arrays of functions returning an int (ILLEGAL)
int*afp[](); // an array of functions returning int pointers (ILLEGAL)
intafa[]()[]; // an array of functions returning an array of ints (ILLEGAL)
intaff[]()(); // an array of functions returning functions returning an int (ILLEGAL)
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
int*fap()[]; // a function returning an array of int pointers (ILLEGAL)
intfaa()[][]; // a function returning an array of arrays of ints (ILLEGAL)
intfaf()[](); // a function returning an array of functions returning an int (ILLEGAL)
int*ffp()(); // a function returning a function returning an int pointer (ILLEGAL)