Static

Objects and variables declared as static retain their values for the duration of the program’s execution. In recursive code, a static object or variable is guaranteed to have the same state in different instances of a block of code.

Objects and variables defined outside all blocks have static lifetime and external linkage by default. A global object or variable that is explicitly declared as static has internal linkage.

Static objects and variables persist for the duration of the program’s execution.