as many suggests here, I don't think ptr is an array of 10 ints. Instead, it is an array of integer pointers.
ptr is an array[sized 10] of integer pointers
In fact it creates an uninitialized set of pointers. You can understand it from the code below.
The aforesaid code when compiled shows a warning:
"warning: 'ptr' is used uninitialized in this function"
But when executed it outputs '1'.
If you desire, you can initialize ptr,ptr etc with different sized integer arrays
I think I have given enough explanations. Your comments are welcome.