local vs global variables

27
Local vs Global variables Local variable – Known only to the function in which it is declared – Cannot be accessed outside the function

Upload: saxton

Post on 11-Jan-2016

35 views

Category:

Documents


3 download

DESCRIPTION

Local variable Known only to the function in which it is declared Cannot be accessed outside the function. Local vs Global variables. Global variable Known to all functions in the same file Can be known to other functions in other files - PowerPoint PPT Presentation

TRANSCRIPT

Local vs Global variables

• Local variable– Known only to the function in which it is

declared– Cannot be accessed outside the function

Local vs Global variables

• Global variable– Known to all functions in the same file– Can be known to other functions in other files– Cannot be accessed inside a function if that function

has a variable by the same name, unless the scope resolution operator is used

#include <iostream.h>

void Func(void);void main( ){ int Num = 1; // Num is a local variable cout << “in main, Num is” << Num << endl; Func( ); cout << “back in main, Num is still” << Num; }

void Func(void)

{ int Num = 20; // Num is a local variable

cout << “In Func, Num is” << Num << endl;}

#include <iostream.h>void Func(void);void main( ){ int Num = 1; // Num is a local variable cout << “in main, Num is” << Num << endl; Func( ); cout << “back in main, Num is still” << Num;}

void Func(void)

{ int a = 20; // Num is not known here

cout << “In Func, Num is” << Num << endl;}

Global variablesVariables that are defined outside a function

void Func( ); // function prototypeint Num =2; // global variablevoid main( ){ cout << “In main, Num is” << Num << endl; Func(); cout << “Back in main Num is ” << Num ; return 0; }

// the first cout displays 2 for Num

2

Num

Global variablesVariables that are defined outside a function

void Func( ){ cout << “In Func, Num is” << Num << endl; Num = 50; cout << “But, it is now changed to” << Num; }

// the first cout displays 2// the second cout displays 50

2

Num

Global above main

Global variablesVariables that are defined outside a function

void Func( ){ cout << “In Func, Num is” << Num << endl; Num = 50; cout << “But, it is now changed to” << Num; }

// the first cout displays 2// the second cout displays 50

50

Num

Global variablesVariables that are defined outside a function

void Func( ); // function prototypeint Num =2; // global variablevoid main( ){ cout << “In main, Num is” << Num << endl; Func(); cout << “Back in main Num is ” << Num ; return 0; }

// the first cout displays 2 for Num// the second cout displays 50 for Num

50

Num2

Global variablesVariables that are defined outside a function

void Func( ); // function prototypevoid main( ){ cout << “In main, Num is not visible”; Func(); cout << “Back in main Num is not visible” ; return 0; }

int Num =2; // global variable defined between // main and Func

Global variablesVariables that are defined outside a function

void Func( ){ cout << “In Func, Num is” << Num << endl; Num = 50; cout << “But, it is now changed to” << Num; }

// the first cout displays 2// the second cout displays 50

int Num =2; // global variable defined between // main and Func

Scope resolution operator ::

int Val = 1; void main( ){ int Val = 100; cout << “The local variable is set to ” << Val << endl; // displays 100 cout << “The global variable is set to ” << ::Val ; // displays 1

Scope resolution operator ::

int Val = 1; void main( ){ int Val = 100; cout << “The local variable is set to ” << Val << endl; // displays 100 cout << “The global variable is set to ” << ::Val; // displays 1

Storage classification of variables

• auto default type, automatic variables are the ones we’ve have been using

• extern tells the computer that the variable is defined elsewhere in the program

• register tells the computer to use one of the CPU’s registers

• static persists (it’s value remains) even after leaving function

double Value = 3.5;

void main( )

{ extern double Value; // unnecessary in this use

cout << “The value is” << Value << endl;

register int Number; // use arithmetic/logic unit

for (Number =2; Number <=120; Number*=2)

cout << Number << endl; }

void main( ){ ShowLocal( ); ShowLocal( ); return 0;}void ShowLocal(void){ int LocalNum=5; cout << “localNum is “ << LocalNum << endl; LocalNum = 99; } // displays 5 always

void ShowLocal(void);

void main( ){ for (int Count=0; Count < 5; Count++) ShowStatic( ); // function is called 5 times}void ShowStatic(void){ static int StatNum=5; // initialized only once cout << “StatNum is “ << StatNum << endl; StatNum ++; } // value persists // 5 6 7 8 9 will display for StatNum value

void ShowStatic(void);

Default arguments

void DisplayStars(int = 10, int =1);void main( ){ DisplayStars( ); cout << endl; DisplayStars(5); cout << endl; DisplayStars(7,3); }

void DisplayStars(int Cols, int Rows){ for (int Down = 0; Down < Rows; Down++) { for (int Across=0; Across < Cols;Across++) cout << ‘*’; cout << endl; } }

Default arguments

void DisplayStars(int = 10, int =1);void main( ){ DisplayStars( ); cout << endl; DisplayStars(5); cout << endl; DisplayStars(7,3); }

void DisplayStars(int Cols, int Rows){ for (int Down = 0; Down < Rows; Down++) { for (int Across=0; Across < Cols;Across++) cout << ‘*’; cout << endl; } }

Default arguments

void DisplayStars(int = 10, int =1);void main( ){ DisplayStars( ); cout << endl; DisplayStars(5); cout << endl; DisplayStars(7,3); }

void DisplayStars(int Cols, int Rows){ for (int Down = 0; Down < Rows; Down++) { for (int Across=0; Across < Cols;Across++) cout << ‘*’; cout << endl; } }

Returning a value from a function

A function may return a value back to the part of the program that called the function by using a return statement

Argument

Argument

Argument

Argument

FunctionReturn Value

Returning a value from a function

int Square (int); // function prototypevoid main(void){ int Value, Result; cout << “Enter a number and I will square it:”; cin >> Value; Result = Square (Value);

int Square (int Number){ return Number * Number; }

cout << Value << “squared is” << Result;}

Write a program that asks the user to enter a number and calls a function which receives the number. The purpose of the function is to determine if the number is even or odd. The function will return a 0 or false if the number is odd or a 1 or true if the number is even.

#include <iostream.h>

bool IsEven(int);void main( ){ int Val; cout << “Enter an integer”; cin >> Val; if ( IsEven(Val)) cout << Val << “is even\n”; else cout << Val << “is odd\n”; }

0 or 1

bool IsEven(int Number){ if ( Number % 2 ) return 0; else return 1;}

Number has a copy of whatever is inside Val in main

5

5Val

bool IsEven(int Number){ if ( Number % 2 ) return 0; else return 1;}

Number has a copy of whatever is inside Val in main

5

5Val

5/2 is 2 with a remainder of 1

bool IsEven(int Number){ if ( Number % 2 ) return 0; else return 1;}

Number has a copy of whatever is inside Val in main

5

5Val

5/2 is 2 with a remainder of 1

bool IsEven(int Number){ if ( Number % 2 ) return 0; else return 1;}

Number has a copy of whatever is inside Val in main

36

36Val

36/2 is 18 with a remainder of 0