So currently I've been working with pointers and now I know how to use them and where are they going in the money, but there is still one question that keeps bothering me. Why do I want some things in Heap and some in Stack ?

When we are declaring a pointer the variable and the address stays in the stack, but the specific pointer address POINTS to the value. Okay, but why do I want to do that ? Why shouldn't I just declare a normal variable ? What's the point and when do I have to use dynamic memory allocation ?