if X is a valid type then

(abbreviations:

p2 :	pointer to
a  :	array[] of
f  :	function
r  :	returning)


Declaration			Implication
1.	X *a			; p2X
2.	X a[]			; aX
3.	X *a[]			; ap2X
4.	X (*a)[]		; p2aX
					|||ly we have,
5.	X a()			; frX
6.	X *a()			; frp2X
7.	X (*a)()		; p2frX
					mixing the above 
8.	X (*a[])()		; ap2frX
9.	X*(*a[])()		; ap2frp2X
10.	X (*a())()		; frp2frX
11.	X (*a())[]		; frp2aX
					making pointers for 8,9,10,11
12.	X (*(*a)[])()		; p2ap2frX
13.	X*(*(*a)[])()		; p2ap2frp2X
14.	X (*(*a)())()		; p2frp2frX
15.	X (*(*a)())[]		; p2frp2aX
					making functions to return 12,13,14,15
16.	X (*(*a())[])()		; frp2ap2frX
17.	X*(*(*a())[])()		; frp2ap2frp2X
18.	X (*(*a())())()		; frp2frp2frX 
19.	X (*(*a())())[]		; frp2frp2aX
					making arrays of return 12,13,14,15
16.	X (*(*a[])[])()		; ap2ap2frX
17.	X*(*(*a[])[])()		; ap2ap2frp2X
18.	X (*(*a[])())()		; ap2frp2frX 
19.	X (*(*a[])())[]		; ap2frp2aX


Ques :	How will you make the function in 16 to return a X
Ques :	How will you make the size of the array of pointer to 5
	and array of func ptr to 10 ?










