It is called double pointer. it is a pointer to a pointer. It is mostly used to create a 2D Array dynamically. for example a matrix.
you can create a 2D array of integers as given below statically if you know the number of rows and columns prior to program execution
int nMatrix[5][6];
using the concept of double pointer you can create such a matrix dynamically as shown below
Notice that when you say **ptr you're actually dereferencing a pointer to a pointer, as Bazzy said. The actual variable name is simply ptr, as you can see from Reannah's post.