Is there a Variable allocated on the Heap?

You seem to have understood. There is a float on the heap* and a pointer on the stack*. The disagreement is 'just' a naming convention for how you refer to the float.

Some people talk of things-that-are-pointed-to in terms of the-thing-that-does-the-pointing. I am inclined to agree with you: this is potential confusing, and can add complexity.

However in the interest of fairness: keep in mind different people have different motivations for the way they use language. If you never want to deal with pointers and they are just a way of having a variable persist outside of its scope then seeing (*a) as the variable and remembering it obeys slightly different rules is not completely without merit.

[*] Modulo grammar/standards nazisim.

a is a pointer with automatic storage duration.

It points to a double which has dynamic storage duration.

It's your job to call delete a; before you lose a pointer to the dynamic memory; typically when a drops out of scope.

(Informally speaking, and talking of typical implementations of C++, you can say that a is on the stack and it points to memory on the heap.)