ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1139224 Топик полностью
Guest (17.10.2021 20:44, просмотров: 6) ответил Costic на Про static вы не правы. Static, как и extern, а также "древнеславянский" auto определяют область видимости - scope. Помещать в регистры и оптимизировать их компилятор может так, как считает нужным.
Ну это же надо так запутаться в элементарном вопросе. Static для того и введен (и того так называется), чтобы создать аналог глобальной переменной, но не засорять глобальное пространство имен. И эта область памяти не может быть ни регистром, ни стеком и не кучей, т.к. все эти области памяти временные. Линкер обрабатывает static так же, как и глобальную переменную и аналогично инициализирует ее при старте программы. Единственное ее отличие от глобальной в том, что она видима 

лишь из подпрограммы, в которой обьявлена. Статическая переменная не может измениться при выходе из подпрограммы, в отличие от auto. Volatile -всегда статическая переменная, но static - не всегда volatile.