This document discusses double pointers or pointer-to-pointers in C. A double pointer is a pointer that holds the address of another pointer variable. The first pointer stores the address of a variable, while the second pointer stores the address of the first pointer. To declare a double pointer in C, an additional asterisk is placed before the pointer variable name, such as int **ptr, which declares a pointer that points to a pointer of type int.