Respuesta corta … depende.
Las variables locales definidas static no pierden su valor entre las llamadas de función. En otras palabras, son variables globales, pero alcanzan la función local en la que se definen.
Las variables globales static no son visibles fuera del archivo C en el que se definen.
Las funciones static no son visibles fuera del archivo C en el que se definen.
Ejemplo:
#include <stdio.h>
const char *string(){
static char *helloworld = "Hello World.\n";
return helloworld;
}
int main(){
printf("%s",string());
return 0;
}