Add to Favorites    Make Home Page 239 Online  
 Language Categories  
 Our Services  

Get 9,000 Interview Questions & Answers in an eBook.


  • 9500+ Pages
  • 9000 Question & Answers
  • All Tech. Categories
  • 14 MB Content

    Get it now !!



    Send your Resume to 6000 Companies


  • Pointers And Memory - Contents


    Simple Reference Parameter Example

    A D V E R T I S E M E N T

    Want free Oracle Magazine? Apply here now!

    Search Projects & Source Codes:

        Swap(): The standard example of reference parameters is a Swap() function which exchanges the values of two ints. It's a simple function, but it does need to change the caller's memory which is the key feature of pass by reference.

        Swap() Function The values of interest for Swap() are two ints. Therefore, Swap() does not take ints as its parameters. It takes a pointers to int — (int*)'s. In the body of Swap() the parameters, a and b, are dereferenced with * to get at the actual (int) values of interest.

    
    void Swap(int* a, int* b) {
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
    }
    

        Swap() Caller To call Swap(), the caller must pass pointers to the values of interest...

    
    void SwapCaller() {
    int x = 1;
    int y = 2;
    Swap(&x, &y); // Use & to pass pointers to the int values of interest
    // (x and y).
    }

        The parameters to Swap() are pointers to values of interest which are back in the caller's locals. The Swap() code can dereference the pointers to get back to the caller's memory to exchange the values. In this case, Swap() follows the pointers to exchange the values in the variables x and y back in SwapCaller(). Swap() will exchange any two ints given pointers to those two ints.

        Swap() With Arrays Just to demonstrate that the value of interest does not need to be a simple variable, here's a call to Swap() to exchange the first and last ints in an array. Swap() takes int*'s, but the ints can be anywhere. An int inside an array is still an int.

    
    void SwapCaller2() {
    int scores[10];
    scores[0] = 1;
    scores[9[ = 2;
    Swap(&(scores[0]), &(scores[9]));// the ints of interest do not need to be
    // simple variables -- they can be any int. The caller is responsible
    // for computing a pointer to the int.
    
    The above call to Swap() can be written equivalently as Swap(scores, scores+9)
    due to the array syntax in C. You can ignore this case if it is not familiar to you it's
    not an important area of the language and both forms compile to the exact same thing
    anyway.
    

        Is The & Always Necessary? When passing by reference, the caller does not always need to use & to compute a new pointer to the value of interest. Sometimes the caller already has a pointer to the value of interest, and so no new pointer computation is required. The pointer to the value of interest can be passed through unchanged.

    
    For example, suppose B() is changed so it calls a C() function which adds 2 to the value
    of interest...
    // Takes the value of interest by reference and adds 2.
    void C(int* worthRef) {
    *worthRef = *worthRef + 2;
    }
    // Adds 1 to the value of interest, and calls C().
    void B(int* worthRef) {
    *worthRef = *worthRef + 1; // add 1 to value of interest as before
    C(worthRef); // NOTE no & required. We already have
    // a pointer to the value of interest, so
    // it can be passed through directly.
    }
    

    Back to Table of Contents


    A D V E R T I S E M E N T




    Google Groups Subscribe to SourceCodesWorld - Techies Talk
    Email:

    Free eBook - Interview Questions: Get over 1,000 Interview Questions in an eBook for free when you join JobsAssist. Just click on the button below to join JobsAssist and you will immediately receive the Free eBook with thousands of Interview Questions in an ebook when you join.

     Advertisements  

     Free Magazines

    Jobs & Career
    Freshers Jobs
    Jobs Newsletter
    Placement Papers
    Placement Papers
    GATE Preparation
    Analysis & Design Of Algo.
    Operating System
    Lexical Analysis
    GRE Preparation
    GRE Home
    1208 Antonyms Test
    5000 Word's List
    Top 100 Words' List
    Scholarships
    Top 100 CS Univ.
    Top 126 EE Univ.
    Tutorials
    Hardware Tutorial
    1500 Free eBooks
    XML Tutorial
    Webmaster Resources
    EzTraffic
    Articles
    Fun
    Send FREE SMS!
    SMS Jokes
    Love SMS
    Funny Jokes

    Google Search

    Google

    Source Codes World.com is a part of Vyom Network.

    Vyom Network : Free SMS, GRE, GMAT, MBA | Online Exams | Freshers Jobs | Software Downloads | Interview Questions | Delhi Info | Jobs, Discussions | Placement Papers | Free eBooks | Free eBooks | Free Business Info | Interview Questions | Free Tutorials | Arabic, French, German | IAS Preparation | Jokes, Songs, Fun | Free Classifieds | Free Recipes | Free Downloads | Bangalore Info | Tech Solutions | Project Outsourcing, Web Hosting | GATE Preparation | MBA Preparation | SAP Info | Software Testing | Google Logo Maker | Freshers Jobs

    Sitemap | Privacy Policy
    Copyright ©2003-2006 Vyom Technosoft Pvt. Ltd., All Rights Reserved.
    Page URL: http://www.sourcecodesworld.com/articles/c/pointers-and-memory/reference_parameter2.asp


    Download Yahoo Messenger | Placement Papers | Free SMS | C Interview Questions | C++ Interview Questions