Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to return multiple types from a function in C?

I have a function in C which calculates the mean of an array. Within the same loop, I am creating an array of t values. My current function returns the mean value. How can I modify this to return the t array also?

/* function returning the mean of an array */
double getMean(int arr[], int size) {
   int i;
   printf("\n");
   float mean;
   double sum = 0;
   float t[size];/* this is static allocation */
    for (i = 0; i < size; ++i) {
        sum += arr[i];
        t[i] = 10.5*(i) / (128.0 - 1.0);
        //printf("%f\n",t[i]);
   }
   mean = sum/size;
   return mean;
}

Thoughts: Do I need to define a struct within the function? Does this work for type scalar and type array? Is there a cleaner way of doing this?

like image 301
Sjoseph Avatar asked Aug 18 '26 22:08

Sjoseph


1 Answers

You can return only 1 object in a C function. So, if you can't choose, you'll have to make a structure to return your 2 values, something like :

typedef struct X{
     double mean;
     double *newArray;
} X;

BUT, in your case, you'll also need to dynamically allocate the t by using malloc otherwise, the returned array will be lost in stack.

Another way, would be to let the caller allocate the new array, and pass it to you as a pointer, this way, you will still return only the mean, and fill the given array with your computed values.

like image 196
Cédric Julien Avatar answered Aug 20 '26 19:08

Cédric Julien



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!