Returning array from a function
Return arrays from function
A function can not return more than one value thus it is not possible to directly return arrays as values from a function in C.
However, you can use the following methods to indirectly return an array from a function:
Return a pointer: You can return a pointer to an array. This is the most common way to return an array from a function.
Pass a pointer as an argument: You can pass a pointer as an argument to the function and modify the elements of the array using the pointer.
Return Array using pointer
Here's an example to return Array from a function using pointer
#include <stdio.h>
int *getArray(int size)
{
static int arr[100];
for (int i = 0; i < size; i++)
{
arr[i] = i * 2;
}
return arr;
}
int main(void)
{
int *p, size = 5;
p = getArray(size);
for (int i = 0; i < size; i++)
{
printf("%d ", *(p + i));
}
return 0;
}
Output:
Explanation:
- The
getArray
function returns a pointer to an arrayarr
. - The
arr
array is declared as astatic
array, which means its contents persist even after the function call is over. - The
getArray
function assigns values to the elements of the array and returns its address, which is stored in the pointerp
. - The values of the array can be accessed using the pointer
p
.
Note that you have to dereference the pointer using the * operator to access the values stored in the array.
Return Array using argument
You can also return an array from a function by passing an argument that acts as an output parameter.
Here's an example:
#include <stdio.h>
void getArray(int size, int arr[])
{
for (int i = 0; i < size; i++)
{
arr[i] = i * 2;
}
}
int main(void)
{
int arr[100], size = 5;
getArray(size, arr);
for (int i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
Output:
Explanation:
- The
getArray
function takes two arguments:size
andarr
. - The
arr
argument acts as an output parameter and the function assigns values to the elements of the array. - The
main
function declares an arrayarr
and calls thegetArray
function, passing the size of the array and the array itself. - The
getArray
function assigns values to the elements of the array, which can be accessed in themain
function after the function call is over.
Modify Array using argument
Here is another example that allows us to pass a pointer to the array to the function and then use that pointer to modify the contents of the array.
#include <stdio.h>
void modifyArray(int *arr, int size)
{
for (int i = 0; i < size; i++)
{
arr[i] = arr[i] + 1;
}
}
int main(void)
{
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
modifyArray(arr, size);
for (int i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
Output:
Explanation:
- The
modifyArray
function takes a pointer to an arrayarr
and its sizesize
as arguments. - The contents of the array are modified in the function and the changes are reflected back in the caller function.