Para mí, el uso de la palabra clave staticen C y lenguajes como C # y Java son "falsos amigos" como "convertirse" en inglés y "bekommen" en alemán (= "obtener" en inglés), porque significan cosas diferentes.
En C staticsignifica que la función o variable solo es accesible a través de funciones dentro del mismo archivo fuente, comparable a privatefunciones y miembros en C ++, Java y C #.
En C ++, Java y C # staticsignifica que los métodos no son miembros de una instancia de clase, sino que son más o menos como funciones de C más espacio de nombres.
En mi humilde opinión, estos dos conceptos son bastante diferentes, entonces, ¿por qué los diseñadores de C ++ y posteriores de Java y C # eligieron la staticpalabra clave para ese comportamiento? ¿Hay una conexión lógica que echo de menos?
EDITAR
Sé que staticen C no gobierna la accesibilidad de una manera similar a privateC ++, pero puede usarse de esa manera, consulte https://stackoverflow.com/a/1479639/124983