В случае, если вы упомянули, valie копируется из currentAddress в переменную, которую вы назначаете. Таким образом, изменение значения currentAddress не изменит другие значения.
В C статические ограничения ограничивают видимость переменной текущей единицей перевода (в упрощенном виде, в текущем исходном файле, если проект имеет несколько исходных файлов). Кроме того, он не уничтожает переменные при выходе из своей области, как это происходит с нестатистическими переменными. Например:
int foo(){
int a = 0;
a++;
return a;
}
int bar(){
static int a = 0;
a++;
return a;
}
Каждый вызов Foo() возвращает 1, поскольку переменная а создается, увеличивается, вернулся и уничтожены. Но каждый вызов bar() увеличивает возвращаемое значение (он возвращает 1 первый раз, затем 2, 3, 4 и т. Д.), Потому что переменная больше не уничтожается. Также обратите внимание, что правила доступа к переменной сохраняются: к строке «a» не удается получить доступ за пределами функции бара.
in C 'static' - всего лишь оператор определения области видимости, переменная' currentAddress' видна только в текущем файле. Если поле внутри 'struct A' является' int32_t', оно не изменится, если вы измените 'currentAddress'. –
Лучше вообще не иметь статических переменных. – piokuc
Прошу прощения ... почему лучше не иметь статических переменных? Возможно, вы имеете в виду, что лучше не иметь переменных уровня модуля. Но если у вас их есть, есть веские причины предпочесть, что они статичны. –