In case you mentioned, the valie is copied from currentAddress into the variable you are assigning to. So, changing currentAddress's value, will not change other values.
In C, static limits the variable's visibility to the current translation unit (in simpler terms, in the current source file, if the project has multiple source files). Also, it does not destroy variables at exiting from their scope, as it would happen with non-static variables. For example:
int foo(){
int a = 0;
a++;
return a;
}
int bar(){
static int a = 0;
a++;
return a;
}
Every call to foo() returns 1, because variable a is created, incremented, returned and destroyed. But, every call to bar() increases the value returned (it returns 1 first time, then 2, 3, 4, and so on), because the a variable is not destroyed anymore. Also note that the variable accessing rules are preserved: the a from bar cannot be accessed outside the bar function.
staticis just a scoping operator, the variablecurrentAddressis only visible within the current file. If the field withinstruct Ais anint32_tthan it will not change if you modifycurrentAddress.staticused on a variable in a function would make the variable persist from call to call, that is, it wouldn't be created on the stack (in RAM) but in NVM.