Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
40 views

Cpp2 Functions

The document discusses C++ functions, including built-in math functions, function prototypes, passing arguments, recursion, inline functions, default arguments, function overloading, and templates. It also covers storage classes like auto, register, extern, and static that determine how long variables exist in memory, and scope rules for where identifiers are visible in code. Examples are provided of functions to display a square of asterisks, calculate the greatest common divisor, and other exercises.

Uploaded by

lalitha
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

Cpp2 Functions

The document discusses C++ functions, including built-in math functions, function prototypes, passing arguments, recursion, inline functions, default arguments, function overloading, and templates. It also covers storage classes like auto, register, extern, and static that determine how long variables exist in memory, and scope rules for where identifiers are visible in code. Examples are provided of functions to display a square of asterisks, calculate the greatest common divisor, and other exercises.

Uploaded by

lalitha
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 25

C++

Lecture 2
Friday 11 July 2003
Chapter 3, Functions

 built-in functions
 function prototype, function
definition and use
 storage class and scope
 recursion
 inline function
 default argument, function
overloading, template
Math Library Functions

 #include <cmath> // to use math


// library
 On Unix, special compiler flag is
needed
C.f. math.h
gxx file.cpp -lm
 most math functions take
double as argument and return
double as value
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) C.f. Fig.3.2 h

 For some compilers (such as


GNU C++), there are also some
special functions, such as err
function, bessel function etc.
Functions

 Organization of Large Program


• Separate tasks into functions
• Group related functions in
separate files.
 Typical Program Prototypes;
main() { … ;}
func1() { …; }
func2(int i, …) { … }
Functions

 Function prototype
 function definition
 use of function
 argument passing in C++

C.f. Fig.3.3
Function Prototypes

 Format
void maximum(int, int, int);
 Location of function prototype
in file
 When can we omit function
prototype?
 Advantage of prototype
Storage Classes

 Storage class determines the


period during which an identifier
exists in memory

 Four storage classes


auto, register, extern, static
C.f. Fig. 3.12
Auto Storage Class

 Local variables in functions or


blocks. Auto storage class
variables are created only when
the block is active, and
disappear when the block or
function exits.
Register Storage Class

 Variable existence like auto.


The register variable is a
suggestion to the compiler to
put the variable in a CPU
register.
Static Storage Class

 Local static variable exists


during the whole program
executing, i.e., the variable
retains its value between
function calls.
 However, the reference to the
variable is local in the function
or block.
Extern Storage Class

 Global variables and function


names have the storage class
extern. Extern storage class
variable exists during the whole
program execution.
Scope Rules

 The places in code segment


that an identifier is visible:
 function scope
 file scope
 block scope
 function-prototype scope
 class scope
Storage Class and
Scope
 Storage class says when a
variable exists
 scope says where in program
segment the variable is valid for
reference
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.
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
Inline Functions

 Advantage: function call


overhead is eliminated, thus
faster and less memory
consuming C.f. Fig. 3.19
 Disadvantage: the code is
expanded during compilation so
that executable file is large
Call by Value v.s.
Call by Reference
 Call-by-value: the function
takes/works on a copy of the
original variable

 Call-by-reference: the function


works on the original variable
passed by caller.
C.f. Fig. 3.20
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
}
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
}
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
function C.f. Fig.3.23
Function Overloading

 Several functions of different


argument types can use the
same function name. E.g. we
can define a function square to
work on int as well as on
double. C.f. 3.25
 In fact, we need to write two
functions to handle two cases.
Function Template

 A function definition with


unspecified data type.
 The type is determined
according to its use at compile
time.
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
****
****
****
****
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 common
divisor of two integers.

You might also like