Function arguments, pass by pointer or reference?

hseldon's Avatar, Join Date: Dec 2010
Newbie Member
Which do you think is best? or cons/pros of each of passing by pointer vs passing by reference.
lionaneesh's Avatar, Join Date: Mar 2010
Invasive contributor
Quote:
Originally Posted by hseldon View Post
Which do you think is best? or cons/pros of each of passing by pointer vs passing by reference.
Passing arguments by pointers allows the function to change our data in the pointed address..

Passing by reference allows us to safeguard our data...

Now lets test it :-

function.c

Code: c
#include<stdio.h>

void passByPointer(int * input)
{
    *input = 100;
}
void passByReference(int input)
{
    input = 1337;
}

int main()
{
    int NumberToTest = 1337;
    printf("Input = %d\n",NumberToTest);
    passByPointer(&NumberToTest);      // change to 100
    printf("Input = %d\n",NumberToTest); // should turn to 100
    passByReference(NumberToTest);   
    printf("Input = %d\n",NumberToTest); // Should be unchanged still will be 100
    return(0);
}

Compiling


Code:
gcc function.c -o function
Running :-

Code:
aneesh@aneesh-laptop:~/Programming/C$ ./function 
Input = 1337
Input = 100
Input = 100
Hope this helps...
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Quote:
Originally Posted by lionaneesh View Post
Passing arguments by pointers allows the function to change our data in the pointed address..

Passing by reference allows us to safeguard our data...

Now lets test it :-

function.c

Code: c
#include<stdio.h>

void passByPointer(int * input)
{
    *input = 100;
}
void passByReference(int input)
{
    input = 1337;
}

int main()
{
    int NumberToTest = 1337;
    printf("Input = %d\n",NumberToTest);
    passByPointer(&NumberToTest);      // change to 100
    printf("Input = %d\n",NumberToTest); // should turn to 100
    passByReference(NumberToTest);   
    printf("Input = %d\n",NumberToTest); // Should be unchanged still will be 100
    return(0);
}

Compiling


Code:
gcc function.c -o function
Running :-

Code:
aneesh@aneesh-laptop:~/Programming/C$ ./function 
Input = 1337
Input = 100
Input = 100
Hope this helps...
You are getting confused with Pass By reference with Pass By Value.
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
Neither is better; they are different tools for different jobs. You may as well ask which is better out of a hammer and a screwdriver.
lionaneesh's Avatar, Join Date: Mar 2010
Invasive contributor
Quote:
Originally Posted by shabbir View Post
You are getting confused with Pass By reference with Pass By Value.
Yes...
Sorry about that!!!
UATLevan's Avatar, Join Date: Mar 2011
Newbie Member
There really is no best, you have to know why you're passing by that choice when you create the function. One advantage of pass by pointer is you can set them to NULL to represent different things in your function while references have to point to an object even though that object might not be valid.


Allen LeVan
UAT Student