Total members 9950 | Gratitudes |It is currently Sat Feb 11, 2012 3:10 am Login / Join Codemiles


All times are UTC [ DST ]




Post new topic Reply to topic  Quick reply  [ 1 post ] 
Author Code Snippet
 Code subject: Reference Parameters
PostPosted: Thu Nov 13, 2008 2:16 pm 
Offline
Beginner
User avatar

Joined: Sun May 25, 2008 5:34 pm
Posts: 95
Has thanked: 2 time
Have thanks: 1 time

Code:
#include <iostream>

using namespace std;

// Swap two values.
void swap(double &a, double &b)
{
        double tmp = a;
        a = b;
        b = tmp;
}

// Return multiple results.
void stats(double x, double y, double &absdif, double &mean, double &sumsqr)
{
        if(x > y) swap(x, y);

        absdif = y - x;
        mean = (x + y) / 2.0;
        sumsqr = x*x + y*y;
}

int main()
{
        double a = 10.45;
        double b = 20.22;

        cout << a << " " << b << endl;
        swap(a, b);
        cout << a << " " << b << "\n" << endl;

        double c = 4.56;
        double d = -3.45;
        double absdif, mean, ss;
        stats(c, d, absdif, mean, ss);
        cout << c << " " << d << " " << absdif << " " <<
                mean << " " << ss << endl;
        stats(22.0, 41.5, absdif, mean, ss);
        cout << absdif << " " << mean << " " << ss << endl;
}


The usual way of passing parameters in C++, and the only way in C, is by value. Each parameter becomes a copy of its argument, and changes to in the function body do not make changes in the caller. This is similar to Java. C++ provides reference parameters, which are denoted using an & in front of the parameter name. Reference parameters become aliases for their arguments, and changes to the parameters immediately change the arguments. You cannot send an expression argument to a reference parameter; you must send something which could appear on the left side of an assignment.

The swap function is a classic use of reference parameters. When the reference parameters are exchanged, the arguments are exchanged since the parameters are aliases for them. Also notice that the stats function receives x and y by value, and uses swap to exchange its copies, but this does not effect the values of c and d in the main.

Reference parameters are by far the main use of the reference mechanism in C++. It can also be used for return values, and, though it seems to have no practical use, ordinary variables.


TOP
 Profile Send private message  
Reply with quote  
Post new topic Reply to topic Quick reply  [ 1 post ] 
Quick reply


  


 Similar topics
 Topic title   Forum   Author   Comments 
 Id reference annotation relationship  JPA  msi_333  0
 Reference between two schemas in oracle  General Discussion  msi_333  0
 Passing a Reference Variable  Java  msi_333  0
 pass parameters to main method args[] variables  Java examples  msi_333  0
 method with a variable number of parameters  Java examples  msi_333  0

All times are UTC [ DST ]


Users browsing similar codes

Users browsing this forum: No registered users and 1 guest



Jump to:  
Previous Code Snippet | Next Code Snippet 




Home
General Talks
Finished Projects
Code Library
Games
Tutorials

Java
C/C++
C-sharp
php
Script
JSP/Servlets
Ajax
ASP/ASP.net
Google SEO
Database
Communications
Phpbb3 styles
Photoshop tutorials
Flash tutorials
Find a job






Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team