pointer to pointer

The following is the memory layout of a pointer to a pointer.
Let's assume an 8 bit computer with 8 bit addresses (and thus only 256 bytes of memory). This is part of that memory (the numbers at the top are the addresses):

const char *c = "hello";
... defines c to be a pointer to the (read-only) string "hello", and thus contains the value 63. c must itself be stored somewhere: in the example above at location 58. Of course we can not only point to characters, but also to other pointers. E.g.:

const char **cp = &c;
Now cp points to c, that is, it contains the address of c (which is 58).
________________________________________________________________________

What I would like is a brief memory layout of a pointer to a pointer of a node or struct of a linked list. What is the value of **head, *head, head in the insertFront routine. Hope Im not asking to much.

pointers are variables that store the value of a memory address of another variable of the same type

pointer to pointer stores the memory address of a pointer

I think the word pointer makes the idea of pointers hard to understand. It almost makes pointers seem like some mystical property of the c/c++ language that just points and does not have an actual value. When in fact they do have a value (the memory address they hold) and they have a memory address where they are stored just like any other type.

12345678910111213

void insertFront(struct node **head,int frontData)
{
// the value of head is the value of the memory address of *head hence head// stores the address of another pointer// the value of *head is the value of the memory address of **head hence // *head stores the memory address of the underlying node// **head is an object of type node
node *frontNode = new node;
frontNode->next = *head;
frontNode->data = frontData;
*head = frontNode;
}