int a[2][3][4] ; ===> a is 3 dimensional Array ===> Collection of Two Dimensional Arrays and point to the 0th 2D
[4] ---- elements =====> {a,b,c,d}
[3] ---- 1-D Array =====> { {a,b,c,d},{a,b,c,d},{a,b,c,d} }
[2] ---- 2-D Array =====> { { {a,b,c,d},{a,b,c,d},{a,b,c,d} } , { {a,b,c,d},{a,b,c,d},{a,b,c,d} } }
1. sizeof(a)
a ===> 3-D Array = collection of 2D array ====> sizeof(a) = no.of 2D Arrays * size of 2-D Array = 2 * X
2. sizeof(*a)
*a ===> 2-D Array = converted into collection of 1D array ====> no.of 1-D Arrays * sizeof 1-D array = 3 * Y
3.sizeof(**a)
**a ===> 1-D Array = converted into collection of elements ====> sizeof(**a) = no.of elements * size of element = 4* Z
4. sizeof(***a)
***a ===> element ====> sizeof(***a) = size of element = size of datatype
O/P : -
4) 4 Bytes
3) 4 * 4 Bytes = 16 Bytes
2) 3 * 16 Bytes = 48 Bytes
1) 2 * 48 Bytes = 96 Bytes