Народ - В Си первая декларация совершенно законна. Он скомпилируется и может быть использован для инициализации значения. Вы можете объединить строку кода из второго объявления, чтобы она обновлялась при каждом последующем выполнении функции. Это обычно используется, в частности, во встроенных программах, где память и ресурсы более скудны, чем компьютеры или распределенные приложения.
Причина, по которой вы бы использовали статический, заключается в том, что переменная имеет жизненный цикл данных, который продолжается на протяжении всего выполнения программы, при этом ограничивая ее доступ только к функции, объявленной статическим, или любой функции в файле, если статическое объявление включено в верхней части файла, в противном случае данные будут потеряны при каждом выходе из функции. Это хорошая практика программирования, позволяющая избежать случайного доступа к объектам данных, которые должны быть защищены и ограничены. Этот комментарий относится только к языку программирования C, не путайте его с заявлением о C ++ (где это происходит в некоторых случаях) или JAVA. Статика в Java имеет совершенно другое значение. Из того, что я читал в этой теме, мало кто понимает, как работает ключевое слово static в C, и путает ключевое слово static с другими языками, которые применяются в C. В C static очень важное ключевое слово, которое помогает управлять функцией и доступ к данным, и вы можете инициализировать статическую переменную с другой переменной при условии, что она находится в области видимости, и вы можете обновлять это значение во время выполнения программы, что, вероятно, в любом случае будет необходимо.