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.‖
Similar Questions
What is storage class? What are the different storage classes in C?
What is the use of typedef?
What are register variables? What are the advantages of using register variables?
Describe about storage allocation and scope of global, extern, static, local and register variables?
Where does global, static, and local, register variables, free memory and C Program instructions get stored?
Where is the auto variables stored?
What is static identifier?
What are macros? What are its advantages and disadvantages?
What does static variable mean?