Static variables in C++ exist for the lifetime of the entire program rather than individual function calls. They can be declared at global, file, class, or function scope. Globally scoped static variables are initialized when the program starts and exist until it ends, while static variables within functions are initialized on first use and persist between function calls. Static class members belong to the class itself rather than individual objects and can be accessed without an instance.