Here are some example declarations. The answers are available later in the page, along with how the declaration might be used. These are about as complicated as I expect you will be faced with. (maybe even a little harder). I do not believe you are required to know function pointers but I include them here for completeness. Try to read out them aloud before looking at the answers. int i; int ai[10]; int *ip; int *aip[10]; int (*pai)[10]; int *(*ip)[10]; int *(*ip[10]); -------------------------- -- Function pointers -- -------------------------- int f(); int *frp(); int (*fp)(); int *(*fp)(); int (*fp[10])() ==================================================================== ==================================================================== int i; /* an int */ i = 1; int ai[10]; /* an array[10] of int */ ai[0] = 1; int *ip; /* pointer to int */ ip = &i; /* make a pointer to i */ ip = ai; /* ip points to first element of ai */ int *aip[10]; /* array[10] of pointer to int */ aip[0] = &i; /* pointer to i stored in 0th element */ *aip[0] = 2; /* store 2 into variable pointed to by ip[0] */ int (*pai)[10]; /* pointer to array[10] of int */ int ai[10]; pai = &ai; /* store pointer to array ia in ip */ (*pai)[0] = 1; /* store 1 in the 0th element of the array pointed by ip */ int *(*papi)[10]; /* pointer to array[10] of pointer to int */ int *api[10]; /* array[10] of pointer to int */ papi = &api; int *(*papi[10]); /* pointer to array[10] of pointer to int */ int *api[10]; /* array[10] of pointer to int */ papi = &pia; -------------------------- int f(); /* A function f return int */ int f() { printf ("boo"); return 0; } int *frp(); /* function f return pointer to int */ int frp() { printf ("boo"); return NULL; } int (*fp)(); /* pointer to function return int */ fp = f; i = (*fp) (); /* call the function pointed to by fp */ int *(*fp)(); /* pointer to function return pointer to int */ fp = frp; ip = (*frp)(); /* call the function pointed to by fp */ int (*fp[10])() /* array[10] of pointer to function return int*/ fp[0] = f; fp[1] = f;