From what I've come to understand, we don't often use global variables because we want to preserve the name in case we wish to use it for a different, but similar purpose later on in the program. However, I've found in programming, that, at times, some variables only serve one purpose throughout the program and often have to be passed to function purely so they can be passed to other functions that need them and always because they need to use the same named variable, in a different spot.

Wouldn't it make more sense then to put those variables in a header file and make them global?

For example:

Let's say I have a menu variable that contains all of the default menu attributes for a menu system, or a character variable that records every aspect of a character. Rather than reference the variable everywhere, why not make it global?