---
title: "6.13 Returning Array-Related Data"
description: "C does not allow a function to return an array directly. A function can instead return a pointer to an array element, provided the pointed-to storage remains valid after the function returns. ``` #include int *getElement(int numbers[], int index) {…"
url: "https://edcret.in/docs/c-programming/c-functions/6-13-returning-array-related-data/"
updated: "2026-10-27"
category: C Programming / Functions
---

# 6.13 Returning Array-Related Data

C does not allow a function to return an array directly. A function can instead return a pointer to an array element, provided the pointed-to storage remains valid after the function returns.

```
#include <stdio.h>

int *getElement(int numbers[], int index)
{
    return &numbers[index];
}

int main(void)
{
    int values[] = {10, 20, 30, 40, 50};

    int *ptr = getElement(values, 2);

    printf("Returned value: %d\n", *ptr);

    *ptr = 99;

    printf("Updated array element: %d\n", values[2]);

    return 0;
}
```

### Example Output

```
Returned value: 30
Updated array element: 99
```

### Explanation

The function declaration:

```
int *getElement(int numbers[], int index)
```

specifies a return type of `int *`. The function returns a pointer to an element of the supplied array.

```
return &numbers[index];
```

returns the address of the selected element. Because the array belongs to `main()` and remains alive while the pointer is used, the returned pointer is valid in this example.

The pointer can read or modify the selected element:

```
*ptr = 99;
```

This changes `values[2]` to `99`.

### Returning Array-Related Data

| Method | Description |
| --- | --- |
| Return a pointer to an element | Returns an address within an existing array |
| Return a pointer to dynamically allocated memory | Returns allocated storage that the caller must eventually release |
| Return a structure containing an array | Returns the structure by value, including its array member |
| Fill a caller-provided array | Writes results into storage supplied by the caller |

**Important:** A function must not return a pointer to an ordinary local array whose lifetime ends when the function returns. Such a pointer becomes invalid, and dereferencing it causes undefined behavior.
