¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Right-Left Rule Examples:


 

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


int i; // an int
int *p; // an int pointer (ptr to an int)
int a[]; // an array of ints
int f(); // 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)
int aa[][]; // an array of arrays of ints
int af[](); // an array of functions returning an int (ILLEGAL)
int *fp(); // a function returning an int pointer
int fa()[]; // a function returning an array of ints (ILLEGAL)
int ff()(); // 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
int aaa[][][]; // an array of arrays of arrays of ints
int aaf[][](); // an array of arrays of functions returning an int (ILLEGAL)
int *afp[](); // an array of functions returning int pointers (ILLEGAL)
int afa[]()[]; // an array of functions returning an array of ints (ILLEGAL)
int aff[]()(); // 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)
int faa()[][]; // a function returning an array of arrays of ints (ILLEGAL)
int faf()[](); // a function returning an array of functions returning an int (ILLEGAL)
int *ffp()(); // a function returning a function returning an int pointer (ILLEGAL)



--
Jack, W8TEE