Где хранится переменная не имеет ничего общего с областью видимости.Обычно сам компилятор ограничивает область видимости (доступ к переменной).Если в функции есть оператор типа:
static int xyzzy;
, то xyzzy
не будет разрешен для доступа к коду вне этой функции, несмотря на тот факт, что он имеет статическую продолжительность хранения.
Любая попытка сделать это будет ошибкой во время компиляции, а не проверкой во время выполнения.
Фактически, вы можете влиять на локальную статическую переменную, но с чем-то вродепереполнение буфера (попадание в область хранения, где оно существует), а не через его имя (которое компилятор будет запрещать).