C Programming Returning Pointer from Function

In C programming, we can return a pointer from a function like any other data type.

Points to Remember We should not return pointer to a local variable declared inside a function because as soon as control returns from a function all local variables gets destroyed. If we want to return pointer to a local variable then we should declare it as a static variable so that it retains it's value after control returns from function.

Declaration of a Function Returning Pointer

int* getEvenNumbers(int N){
/* Function Body */
}

C Program Returning a Pointer from a Function

#include <stdio.h>
#include <conio.h>
 
/* This function returns an array of N even numbers */
int* getOddNumbers(int N){
    /* Declaration of a static local integer array */
    static int oddNumberArray[100];
    int i, even = 1;
     
    for(i=0; i<N; i++){
        oddNumberArray[i] = even;
        even += 2;
    }
    /* Returning base address of oddNumberArray array*/
    return oddNumberArray;
}
 
int main(){
   int *array, counter;
   array = getOddNumbers(10);
   printf("Odd Numbers\n");
   
   for(counter=0; counter<10; counter++){
       printf("%d\n", array[counter]);
   }
    
   getch();
   return 0;
} 

Program Output
Odd Numbers
1
3
5
7
9
11
13
15
17
19