Parameter passing to_functions_in_c

forwardblog4u 11,349 views 17 slides Sep 07, 2012
Slide 1
Slide 1 of 17
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17

About This Presentation

No description available for this slideshow.


Slide Content

Presentation on Parameter passing to Function Made By Ankita Barasker

Parameter defination . Types of parameter. Call by value. Call by Reference. Advantages of call by reference. Disadvantages of call by reference. . CONTENTS

PARAMETERS A parameter is an intrinsic property of the procedure, included in its definition. Parameter passing methods  are the ways in which parameters are transferred between functions when one function calls another. C++ provides two parameter passing methods-- pass-by-value   and pass-by-reference  .

Types of parameter Parameters are of two types Formal parameters Actual parameters

Formal parameters Formal parameters are written in the function prototype and function header of the definition. Formal parameters are local variables which are assigned values from the arguments when the function is called.

Value Parameter Rules Formal parameter is created on function invocation and it is initialized with the value of the actual parameter. Changes to formal parameter do not affect actual parameter. Reference to a formal parameter produces the value for it in the current activation record. Formal parameter name is only known within its function. Formal parameter ceases to exist when the function completes.

Example of Formal Parameters Return type Function name Formal parameter float CircleArea (float r) { const float Pi = 3.1415; Local object Definition return Pi * r * r; } Return statement Function body

Actual Parameters When a function is called , the values (expressions) that are passed in the call are called the arguments or actual parameters (both terms mean the same thing). The time of the call each actual parameter is assigned to the corresponding formal parameter in the function definition.

Example of Actual Parameter Actual parameter cout << CircleArea ( MyRadius ) << endl To process the invocation, the function that contains the insertion statement is suspended and CircleArea () does its job. The insertion statement is then completed using the value supplied by CircleArea () .

A function can be invoked in 2 ways Call by value Call by Reference

Call By Value The call by value method copies the values of actual parameter in formal parameter. That is the function create its own copy of argument value and then uses it.

Example of call by value #include< iostream.h > int main( ) { int cube( int ); Formal Parameter int vol,side =7; : a vol =cube(side); : value copied cout << vol ; Return 0; side } Actual parameter int cube( int a) { return a*a*a*; } 7 7

Call By Reference In call by reference method the called function does not create its own copy rather it refers to original value only by different name i.e reference. When function is called by reference then ,the formal parameter become reference or alias to the actual parameter in calling function.

Example of Call By Reference #include < iostream.h >   void duplicate ( int & a, int & b, int & c) { a*=2; b*=2; c*=2; } int main ( ) { int x=1, y=3, z=7; duplicate (x, y, z); cout << "x=" << x << ", y=" << y << ", z=" << z; return 0; } x=2, y=6, z=14

Advantages of passing by reference: It allows us to have the function change the value of the argument, which is sometimes useful. Because a copy of the argument is not made, it is fast, even when used with large structs or classes. We can pass by const reference to avoid unintentional changes. We can return multiple values from a function

Disadvantages of passing by reference It can be hard to tell whether a parameter passed by reference is meant to be input, output, or both. An argument passed by value and passed by reference looks the same. We can only tell whether an argument is passed by value or reference by looking at the function declaration. This can lead to situations where the programmer does not realize a function will change the value of the argument. Because references are typically implemented by C++ using pointers, and dereferencing a pointer is slower than accessing it directly, accessing values passed by reference is slower than accessing values passed by value.

THANK YOU