What Is Scope Rules

The functions and external variables that structure a C program needn’t all be compiled at the same time;the source text of the program could also be kept in several files, and previously compiled routines may be loaded from libraries.

Let us discuss these topics by reorganizing the calculator program into several files.As a practical matter, the calculator is just too small to be worth splitting, but it’s a fine illustration of the issues that arise in larger programs.

The scope of a reputation is that the a part of the program within which the name are often used.

For an automatic variable declared at the start of a function, the scope is that the function during which the name is declared. Local variables of the same name in different functions are unrelated.

The same is true of the parameters of the function, which are in effect local variables.The scope of an external variable or a function lasts from the purpose at which it’s declared to the end of the file being compiled.

For example, if main, sp, val, push, and pop are defined in one file, in the order shown above, that is,

main() { … }
int sp = 0;
double val[MAXVAL];
void push(double f) { … }
double pop(void) { … }

then the variables sp and val could also be utilized in push and pop just by naming them; no further declarations are needed. But these names aren’t visible in main, nor are push and pop themselves.

On the opposite hand, if an external variable is to be mentioned before it’s defined, or if it’s defined during a different source file from the one where it’s getting used , then an extern declaration is mandatory.

It is important to differentiate between the declaration of an external variable and its definition.A declaration announces the properties of a variable (primarily its type); a definition also causes storage to be put aside . If the lines

int sp;
double val[MAXVAL];

appear outside of any function, they define the external variables sp and val, cause storage to be set aside,

and also function the declarations for the remainder of that source file. On the other
hand, the lines

extern int sp;
extern doubleval[];

declare for the remainder of the source file that sp may be a n int which val is a double array (whose size is decided elsewhere),but they are doing not create the variables or reserve storage for them.

There must be just one definition of an external variable among all the files that structure the source program; other files may contain extern declarations to access it.

(There may also be extern declarations in the file containing the definition.)

Array sizes must be specified with the definition, but are optional with an extern declaration.Initialization of an external variable goes only with the definition.

Although it’s not a possible organization for this program, the functions push and pop might be defined in one file, and therefore the variables val and sp defined and initialized in another.

Then these definitions and declarations would be necessary to tie them together:


extern int sp;
extern double val[];
void push(double f) { … }
double pop(void) { … }


int sp = 0;
double val[MAXVAL];

Because the extern declarations in file1 lie before and out of doors the function definitions, they apply to all functions; one set of declarations suffices for all of file1.This same organization would also bee needed if the definition of sp and val followed their use in one file.

If you like this post, don’t forget to share 🙂

This article is written by our awesome writer
Comments to: Scope Rules In C Programming Language

Your email address will not be published. Required fields are marked *

Attach images - Only PNG, JPG, JPEG and GIF are supported.

New Dark Mode Is Here

Sign In to access the new Dark Mode reading option.

Explore Tutorials By Categories


Welcome to Codeverb

Ready to learn something new?
Join Codeverb!

Read Smart, Save Time
    Strength indicator
    Log In | Lost Password