c++ lecture 2 friday 11 july 2003. chapter 3, functions l built-in functions l function prototype,...

Post on 13-Dec-2015

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

C++

Lecture 2Friday 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

gxx file.cpp -lm most math functions take double

as argument and return double as value

C.f. math.h

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

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

Formatvoid 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 classesauto, 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. iterationC.f. Fig.3.14

Inline Functions

Advantage: function call overhead is eliminated, thus faster and less memory consuming

Disadvantage: the code is expanded during compilation so that executable file is large

C.f. Fig. 3.19

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 &); // prototypeint 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 *); // prototypeint 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.

In fact, we need to write two functions to handle two cases.

C.f. 3.25

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.

top related