Forums Assignment Help How can I return multiple values from a function?

This topic contains 1 reply, has 1 voice, and was last updated by  Aakanksha 7 years, 7 months ago.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #1149

    Aakanksha
    Participant

    How can I return multiple values from a function?

    #9715

    Aakanksha
    Participant

    There are several ways of doing this. (These examples show hypothetical polar-to-rectangular coordinate conversion functions, which must return both an x and a y coordinate.)

    1. Pass pointers to several locations which the function can fill in:

    #include <math.h>

    polar_to_rectangular(double rho, double theta,

    double *xp, double *yp)

    {

    *xp = rho * cos(theta);

    *yp = rho * sin(theta);

    }

    double x, y;

    polar_to_rectangular(1., 3.14, &x, &y);

    2. Have the function return a structure containing the desired values:

    struct xycoord { double x, y; };

    struct xycoord

    polar_to_rectangular(double rho, double theta)

    {

    struct xycoord ret;

    ret.x = rho * cos(theta);

    ret.y = rho * sin(theta);

    return ret;

    }

    struct xycoord c = polar_to_rectangular(1., 3.14);

    3. Use a hybrid: have the function accept a pointer to a structure, which it fills in:

    polar_to_rectangular(double rho, double theta,

    struct xycoord *cp)

    {

    cp->x = rho * cos(theta);

    cp->y = rho * sin(theta);

    }

    struct xycoord c;

    polar_to_rectangular(1., 3.14, &c);

    (Another example of this technique is the Unix system call stat.)

    4. In a pinch, you could theoretically use global variables (though this is rarely a good idea).

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.