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: #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...
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.
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