Function using pointer| Passing pointer to functions | Return pointer from functions | C - Function pointer | Pointer in C | Function pointer in C | Passing and Return from function | Example | My CS Tutorial
You know that a function can return only one value. If you want a function to alter more than one variable, you can pass pointers to the function to achieve
this. The function will not alter the pointer but the contents of the pointer.
C programming allows passing a pointer to a function. To do so, simply declare the function parameter as a pointer type.
Following is a simple example where we pass an unsigned long pointer to a
function and change the value inside the function which reflects back in the
calling function:-
#include <stdio.h>
#include <time.h>
void getSeconds(unsigned long *par);
int main ()
{
unsigned long sec;
getSeconds( &sec );
/* print the actual value */
printf("Number of seconds: %ld\n", sec );
return 0;
}
void getSeconds(unsigned long *par)
{
/* get the current number of seconds */
*par = time( NULL );
return;
}
When the above code is compiled and executed, it produces the following result:
Number of seconds :1294450468
We have seen in top how C programming allows to return an array
from a function. Similarly, C also allows to return a pointer from a function. To
do so, you would have to declare a function returning a pointer as in the
following example:-
int * myFunction()
{
.
.
.
}
Second point to remember is that, it is not a good idea to return the address of
a local variable outside the function, so you would have to define the local
variable as static variable.
Now, consider the following function which will generate 10 random numbers
and return them using an array name which represents a pointer, i.e., address
of first array element.
#include <stdio.h>
#include <time.h>
/* function to generate and retrun random numbers. */
int * getRandom( )
{
static int r[10];
int i;
/* set the seed */
srand( (unsigned)time( NULL ) );
for ( i = 0; i < 10; ++i)
{
r[i] = rand();
printf("%d\n", r[i] );
}
return r;
}
/* main function to call above defined function */
int main ()
{
/* a pointer to an int */
int *p;
int i;
p = getRandom();
for ( i = 0; i < 10; i++ )
{
printf("*(p + [%d]) : %d\n", i, *(p + i) );
}
return 0;
}
When the above code is compiled together and executed, it produces the
following result:-
1523198053
1187214107
1108300978
430494959
1421301276
930971084
123250484
106932140
1604461820
149169022
*(p + [0]) : 1523198053
*(p + [1]) : 1187214107
*(p + [2]) : 1108300978
*(p + [3]) : 430494959
*(p + [4]) : 1421301276
*(p + [5]) : 930971084
*(p + [6]) : 123250484
*(p + [7]) : 106932140
*(p + [8]) : 1604461820
*(p + [9]) : 149169022
Function using pointer| Passing pointer to functions | Return pointer from functions | C - Function pointer | Pointer in C | Function pointer in C | Passing and Return from function | Example | My CS Tutorial
_______________________________________
Passing and return function from pointer | My CS Tutorial |
Passing Pointers to Functions
You know that a function can return only one value. If you want a function to alter more than one variable, you can pass pointers to the function to achieve
this. The function will not alter the pointer but the contents of the pointer.
C programming allows passing a pointer to a function. To do so, simply declare the function parameter as a pointer type.
Following is a simple example where we pass an unsigned long pointer to a
function and change the value inside the function which reflects back in the
calling function:-
#include <stdio.h>
#include <time.h>
void getSeconds(unsigned long *par);
int main ()
{
unsigned long sec;
getSeconds( &sec );
/* print the actual value */
printf("Number of seconds: %ld\n", sec );
return 0;
}
void getSeconds(unsigned long *par)
{
/* get the current number of seconds */
*par = time( NULL );
return;
}
When the above code is compiled and executed, it produces the following result:
Number of seconds :1294450468
Return Pointer from Functions
We have seen in top how C programming allows to return an array
from a function. Similarly, C also allows to return a pointer from a function. To
do so, you would have to declare a function returning a pointer as in the
following example:-
int * myFunction()
{
.
.
.
}
Second point to remember is that, it is not a good idea to return the address of
a local variable outside the function, so you would have to define the local
variable as static variable.
Now, consider the following function which will generate 10 random numbers
and return them using an array name which represents a pointer, i.e., address
of first array element.
#include <stdio.h>
#include <time.h>
/* function to generate and retrun random numbers. */
int * getRandom( )
{
static int r[10];
int i;
/* set the seed */
srand( (unsigned)time( NULL ) );
for ( i = 0; i < 10; ++i)
{
r[i] = rand();
printf("%d\n", r[i] );
}
return r;
}
/* main function to call above defined function */
int main ()
{
/* a pointer to an int */
int *p;
int i;
p = getRandom();
for ( i = 0; i < 10; i++ )
{
printf("*(p + [%d]) : %d\n", i, *(p + i) );
}
return 0;
}
When the above code is compiled together and executed, it produces the
following result:-
1523198053
1187214107
1108300978
430494959
1421301276
930971084
123250484
106932140
1604461820
149169022
*(p + [0]) : 1523198053
*(p + [1]) : 1187214107
*(p + [2]) : 1108300978
*(p + [3]) : 430494959
*(p + [4]) : 1421301276
*(p + [5]) : 930971084
*(p + [6]) : 123250484
*(p + [7]) : 106932140
*(p + [8]) : 1604461820
*(p + [9]) : 149169022
Function using pointer| Passing pointer to functions | Return pointer from functions | C - Function pointer | Pointer in C | Function pointer in C | Passing and Return from function | Example | My CS Tutorial
_______________________________________
Please share this post and blog link with your friends.For more programs use this blog.
If you have any problem, please comment in comment box, subscribe this blog for notifications of new post on your email and follow this blog.If you have any method of this program or want to give any suggestion send email on hc78326@gmail.com
Created by-- HARSH CHAUHAN
No comments:
Post a Comment