Why are programmers masochists? Seriously. Why?
At least compiler writers and pioneers of computer architecture seemed to love ambiguity, even when it is completely unnecessary.
The reason C(and later C++) used static in different contexts as different meanings is allegedly because high quantity of keywords was considered bad.
The following are the meanings of static from what I can recall:
static memory location: a place in physical memory where the program will initially allocate memory at compile-time, enduring for the life of the program.
static variable (or function) outside functions: an internally linked only variable (or function).
static variable inside a function: a variable that has program duration but local block scope.
static member function (or variable) that is shared by all the instances of that class. They live in static memory location and endure for the duration of the program as well.
These people have no clue about didactics. Clearly.