A pointer is a memory address, so a pointer provides a way to indirectly name a variable by naming the address of the variable in the computer’s memory.
Dynamic variables are variables that are created (and destroyed) while a program is running.
Memory for dynamic variables is in a special portion of the computer’s memory called the freestore. When a program is finished with a dynamic variable, the memory used by the dynamic variable can be returned to the freestore for reuse; this is done with a delete
statement.
A dynamic array is an array whose size is determined when the program is running. A dynamic array is implemented as a dynamic variable of an array type.