Describe about storage allocation and scope of global, extern, static, local and register variables?
Question :
Describe about storage allocation and scope of global, extern, static, local and register variables?
Globals have application-scope. They‘re available in any compilation unit that includes an
appropriate declaration (usually brought from a header file). They‘re stored wherever the linker
puts them, usually a place called the ―BSS segment.‖
Extern? This is essentially ―global.‖
Static: Stored the same place as globals, typically, but only available to the compilation unit that
contains them. If they are block-scope global, only available within that block and its subblocks.
Local: Stored on the stack, typically. Only available in that block and its subblocks.
(Although pointers to locals can be passed to functions invoked from within a scope where that
local is valid.)
Register: See tirade above on ―local‖ vs. ―register.‖ The only difference is that
the C compiler will not let you take the address of something you‘ve declared as ―register.‖