c - What happens to initialization of static variable inside a function -


after stumbling onto this question , reading little more here (c++ issue works same in c/c++ afain) saw no mention realy happening inside function.

void f(){   static int c = 0;   printf("%d\n",c++); }  int main(){   int  = 10;   while(i--)     f();   return 0; } 

in snippet, c lifetime entire execution of program, line static int c = 0; has no meaning in next calls f() since c defined (static) variable, , assignment part obsolete (in next calls f()), since takes place @ first time.

so, compiler do? split f 2 functions - f_init, f_the_real_thing f_init initializes , f_the_real_thing prints, , calls 1 time f_init , onward, calls f_the_real_thing?

although standard not dictate how compilers must implement behavior, compilers less sophisticated thing: place c static memory segment, , tell loader place 0 c's address. way f comes straight pre-initialized c, , proceeds printing , incrementing if declaration line not there.

in c++ optionally adds code initialize c static initialization function, initializes static variables. in case, no call required.

in essence, amounts c starting lifetime before first call f. can think of c's behavior if static variable outside f() visibility constrained f()'s scope.


Comments

Popular posts from this blog

networking - Vagrant-provisioned VirtualBox VM is not reachable from Ubuntu host -

c# - ASP.NET Core - There is already an object named 'AspNetRoles' in the database -

ruby on rails - ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true -