8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 1/25
C++
Lecture 2Friday 11 July 2003
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 2/25
Chapter 3, Functions
built-in functions
function prototype, functiondefinition and use
storage class and scope
recursion
inline function
default argument, functionoverloading, template
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 3/25
Math Library Functions
#include <cmath> // to use math
// library On Unix, special compiler flag is
needed
gxx file.cpp -lm
most math functions takedouble as argument and returndouble as value
C.f. math.h
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 4/25
Math Functions
ceil(x), cos(x), exp(x), fabs(x),
floor(x), fmod(x,y), log(x),log10(x), pow(x,y), sin(x),
sqrt(x), tan(x)
For some compilers (such as
GNU C++), there are also some
special functions, such as err
function, bessel function etc.
C.f. Fig.3.2 h
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 5/25
Functions
Organization of Large Program
Separate tasks into functions Group related functions in
separate files.
Typical ProgramPro
to
types;main() { « ;}
func1() { «; }
func2(int i, «) { « }
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 6/25
Functions
Function prototype
function definition use of function
argument passing in C++
C.f. Fig.3.3
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 7/25
Function Prototypes
Format
void maximum(int, int, int); Location of function prototype
in file
When can we omit functionprototype?
Advantage of prototype
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 8/25
Storage Classes
Storage class determines the
period during which an identifier exists in memory
Four storage classesauto, register, extern, static
C.f. Fig. 3.12
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 9/25
Auto Storage Class
Local variables in functions or
blocks. Auto storage classvariables are created only when
the block is active, and
disappear when the block or
function exits.
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 10/25
Register Storage Class
Variable existence like auto.
The register variable is asuggestion to the compiler to
put the variable in a CPU
register.
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 11/25
Static Storage Class
Local static variable exists
during the whole programexecuting, i.e., the variable
retains its value between
function calls.
However, the reference to the
variable is local in the function
or block.
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 12/25
Extern Storage Class
Global variables and function
names have the storage classextern. Extern storage class
variable exists during the whole
program execution.
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 13/25
Scope Rules
The places in code segment
that an identifier is visible: function scope
file scope
block scope function-prototype scope
class scope
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 14/25
Storage Class and
Scope
Storage class says when a
variable exists scope says where in program
segment the variable is valid for
reference
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 15/25
Unary Scope Resolution
Operator ::
Using ::, one can access an
global variable even if it is over-shadowed by a local variable of
the same name.
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 16/25
Recursion
A function can also call itself,
this is known as recursion To avoid infinite recursion, one
must have a terminating
condition in the function
recursion v.s. iteration
C.f. Fig.3.14
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 17/25
Inline Functions
Advantage: function call
overhead is eliminated, thusfaster and less memory
consuming
Disadvantage: the code is
expanded during compilation so
that executable file is large
C.f. Fig. 3.19
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 18/25
Call by Value v.s.
Call byR
eference
Call-by-value: the function
takes/works on a copy of theoriginal variable
Call-by-reference: the function
works on the original variable
passed by caller.C.f. Fig. 3.20
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 19/25
Call by Reference
int func(int &); // prototype
int main()
{func(x); // call as usual
}
int func(int &x) // x is ref to int
{x = ..; // use x as usual
}
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 20/25
Call by Reference Using
Pointer int func(int *); // prototype
int main()
{func(&x); // call as usual
}
int func(int *x) // x is ref to int
{*x = ..; // use x as usual
}
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 21/25
Default Arguments
The right-most arguments, if
omitted, take the default value
Default values are specified at
the first occurrence (prototype
or function definition) of the
functionC.f. Fig.3.23
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 22/25
Function Overloading
Several functions of different
argument types can use thesame function name. E.g. we
can define a function square to
work on int as well as on
double. In fact, we need to write two
functions to handle two cases.
C.f. 3.25
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 23/25
Function Template
A function definition with
unspecified data type.
The type is determined
according to its use at compile
time.
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 24/25
Exercise, p.243, 3.22
Write a function that displays at the
left margin of the screen a solid
square of asterisks whose side is
specified in integer parameter side.
E
.g. side = 4 displays****************
8/9/2019 Cpp2 Functions
http://slidepdf.com/reader/full/cpp2-functions 25/25
Exercise, p.245, 3.32 &
p.248, 3.45
The greatest common divisor
(GCD) of two integers is the
largest integer that evenly
divides each of the numbers.
Write a function gcd() that
returns the greatest commondivisor of two integers.
Top Related