variables global,local,static and constants

majenko:
Also I was taught to declare all my variables together at the start of their scope, not half way through a scope like Java programmers seem to like doing - makes it easy to see what variables are used within that scope.

I found myself nodding at most of your post, but this last part I think is a holdover from 'C' versions where local variables were only allowed to be declared at the start of a block. C++ is better IMO in allowing variables to be declared at any point - it makes it easy to only declare a variable at the point its initial value becomes known, thus preventing any possibility of referring to the uninitialised variable. In effect this gives you another way to limit the scope of the variable, which is always good.