Reversing Array by Returning Array from User Defined Function
Question: Write a Program in C that calls reversearray() to reverse the array and return the array and display the elements of reversed array using pointer.
Program
#include<stdio.h>
#include<conio.h>
/* Function Prototype
Here return type is int * which means
this function will return address and not value :)
*/
int *reverseArray(int n);
/* Main function */
int main()
{
int *p, i, n;
clrscr();
printf("Enter number of elements in array:\n");
scanf("%d", &n);
p = reverseArray(n);
/* Displaying output */
printf("Reversed Array is:\n");
for(i=0;i< n; i++)
{
printf("%d\t", *(p+i));
}
getch();
return 0;
}
int* reverseArray(int n)
{
/* C does not allow to return address of local
variable outside of function that is why
we are declaring array as static variable
*/
static int a[20];
int i, temp;
/* Reading Array */
printf("Enter array elements:\n");
for(i=0;i< n;i++)
{
printf("a[%d]=",i);
scanf("%d", &a[i]);
}
/* Reversing Array */
for(i=0;i< n/2;i++)
{
temp = a[i];
a[i] = a[n-1-i];
a[n-1-i] = temp;
}
/*
for(i=0;i< n;i++)
{
printf("%d\n",a[i]);
} */
/* Returning array (In this case address
of first array element is returned
and in main function which is received
in pointer variable p. Pointer p in main
function is referenced after returning from
reverseArray() function.
*/
return a;
}
Output of above program :
Enter number of elements in array: 5 ↲ Enter array elements: a[0] = 1 ↲ a[1] = 2 ↲ a[2] = 3 ↲ a[3] = 4 ↲ a[4] = 5 ↲ Reversed array is: 5 4 3 2 1 Note: ↲ indicates ENTER is pressed.