C Programming Function Returning Pointers

C Programming Function Returning Pointers

Like function return int, float, char, or any other data type, function can also return a pointer.

To return a pointer in function, needs to be explicitly mentioned in the calling function and also in function definition.

Function Returning A Pointer In C Program

This C program returns a pointer of local integer variable in the function but local variable (val) scope dies in calling function, so prints nothing.

#include <stdio.h>                                                          
                                                                                                                                        
// Function declaration.                                                                             
int *get_addr();                                                                
                                                                                
void main()                                                                     
{                                                                               
  int *addr;                                                                    
  addr = get_addr();                                                            
  printf("%u\n", addr);                                                         
  printf("%d\n", *addr);                                                        
}                                                                               
                        
// Function returning a pointer                                                        
int *get_addr()                                                                 
{                                                                               
  int val = 10;                                                          
  return &val;                                                                  
}    
Output:
$ cc function-return-pointers.c
function-return-pointers.c: In function ‘get_addr’:
function-return-pointers.c:16:10: warning: function returns address of local variable [-Wreturn-local-addr]
   return &val;
          ^~~~
$ ./a.out 
0
Segmentation fault (core dumped)

Making static

Make static to prevent val to be survived,

#include <stdio.h>                                                          
                                                                                                                                        
// Function declaration.                                                                             
int *get_addr();                                                                
                                                                                
void main()                                                                     
{                                                                               
  int *addr;                                                                    
  addr = get_addr();                                                            
  printf("%u\n", addr);                                                         
  printf("%d\n", *addr);                                                        
}                                                                               
                        
// Function returning a pointer                                                        
int *get_addr()                                                                 
{                                                                               
  static int val = 10;                                                          
  return &val;                                                                  
}    
Output:
$ cc function-return-pointers.c
$ ./a.out 
6295596
10

C Programming Examples

C Program To Implement Linked List and Operations

C Program To Implement Sorted Linked List and Operations

C Program to Reverse the Linked List

C Program to Stack and Operations using Linked List

C Program to Queue and Operations using Linked List

C Program to calculate multiplication of two numbers using pointers

C Program To Calculate Median

C Program To Calculate Standard Deviation

C Program For Fahrenheit To Celsius Conversion

C Program To Calculate Average

C Program For Quadratic Equations

C Program To Check Character Type

C Program To Find Largest Of Three Values

C Program To Find Max Value In Array

C Program To Find Min Value In Array

C Program To Print Multiplication Table

C Program For Frequency Counting

C Program To Read A Line Of Text

C Program To Find ASCII Value For Any Character

C Program To Find A Character Is Number, Alphabet, Operator, or Special Character

C Program To Find Reverse Case For Any Alphhabet using ctype functions

C Program To Find Number Of Vowels In Input String

C Program Pointers Example Code

C Program To Find Leap Year Or Not

C Program To Swap Two Integers Using Call By Reference

C Program To Swap Two Integers Without Using Third Variable

C Program To List Prime Numbers Upto Limit

C Program To List Composite Numbers Upto Limit

C Program To Calculate Compound Interest

C Program To Calculate Depreciation Amount After of Before Few Years

C Program To Calculate Profit Percentage

C Program To Calculate Loss Percentage

C Program To Find String Is Polindrome Or Not

C Program To Find Factorial of a Number

C Program To Check Number is a Polindrome or Not

C Program To Generate Random Integers

C Program To Generate Random Float Numbers

C Program to find Square Root of a Number

C Program to find Area of a Rectangle

C Program to find Perimeter of a Rectangle

C Program to find Area of a Square

C Program to find Area of a Triangle

C Program to find Area of a Parallelogram

C Program to find Area of a Rhombus

C Program to find Area of a Trapezium

C Program to find Area of a Circle and Semi-circle

C Program to find Circumference of a Circle and Semi-circle

C Program to find length of an arc

C Program to find Area of a Sector

Privacy Policy  |  Copyright@2017 - All Rights Reserved.  |  Contact us   |  Report website issues in Github   |  Facebook page   |  Google+ page

Free online programming tutorials

Email Facebook Google LinkedIn Twitter
^