---
title: 6.12 Returning Data from Functions
description: "A function can return a computed value to its caller using the `return` statement. When multiple values need to be provided, a function can return a structure, or write results into caller-provided objects through pointers. ``` #include int calculateSum(int a,…"
url: "https://edcret.in/docs/c-programming/c-functions/6-12-returning-data-from-functions/"
updated: "2026-10-27"
category: C Programming / Functions
---

# 6.12 Returning Data from Functions

A function can return a computed value to its caller using the `return` statement. When multiple values need to be provided, a function can return a structure, or write results into caller-provided objects through pointers.

```
#include <stdio.h>

int calculateSum(int a, int b)
{
    return a + b;
}

double calculateArea(double length, double width)
{
    return length * width;
}

int main(void)
{
    int sum = calculateSum(10, 20);
    double area = calculateArea(5.0, 3.0);

    printf("Sum = %dn", sum);
    printf("Area = %.2fn", area);

    return 0;
}
```

### Example Output

```
Sum = 30
Area = 15.00
```

### Explanation

The function `calculateSum()` returns an integer:

```
return a + b;
```

The calling code receives the value and stores it in `sum`.

The function `calculateArea()` returns a `double`:

```
return length * width;
```

Its return value is stored in `area`.

### Ways to Return Data

| Method | Example | Description |
| --- | --- | --- |
| Return a scalar value | `return a + b;` | Returns one value of the specified type |
| Return a structure | `return result;` | Returns a structure value containing multiple fields |
| Use output parameters | `calculate(&sum, &product);` | Writes results into caller-provided objects |
| Return a pointer | `return ptr;` | Returns an address, provided the pointed-to object remains valid |

A function cannot return an array type directly in C. To return array-related data, use a pointer to valid storage, a structure containing an array, or a caller-provided output array. The lifetime of the underlying storage must be considered when returning pointers.
