La directiva static se usa para definir variables globales, de esta forma independientemente de la funcion en la que se encuentre, la variable, tendra el mismo valor y sera la misma variable. Para ponerte un ejemplo, si tienes una variable int llamada a en una funcion y otra con el mismo nombre en otra funcion, solo son para esta funcion y no podras usar esta variable en otra ya que es una variable local. Si usas una variable static int, es la misma variable en todo el programa y puedes cambiarle el valor des de cualquier parte del programa.
Una variable static no puede ser local.
Salu2