OriginalGriff
Карстен прав, но не совсем точно.
В C, a static
переменная ограничена областью действия содержащей функции, но выделяется при запуске вместо того, чтобы быть стековой, как "нормальные" переменные функции.
Это означает, что вы можете рассмотреть static
переменная-это глобальная переменная, доступная только внутри функции, в которой она объявлена, и она создается и инициализируется сразу же после запуска вашего приложения. В результате вы не можете инициализировать его до "изменяемого" значения, такого как ваше y
потому что этого еще даже не существует - особенно когда y
объявляется внутри функции, потому что y
создается каждый раз, когда функция вызывается, и уничтожается каждый раз, когда вы возвращаетесь из функции.