Δημοσιεύτηκε: 03 Ιούλ 2011, 00:19
Έφτιαξα ένα μικρό επεξηγηματικό παράδειγμα, όπου βάζω έναν δείκτη να δείχνει στο 5ο στοιχείο ενός πίνακα και 2 συναρτήσεις που τον μετακινούν 1 θέση, για να δείξει στο 6ο στοιχείο του πίνακα. Στην 1η συνάρτηση τον περνάω by value (οπότε η μετακίνηση δεν διατηρείται) και στη 2η by reference (οπότε η μετακίνηση διατηρείται).
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
// ------------------------------------------------------------------------------
void pointer_by_value (int *p )
{
p++;
return;
}
// ------------------------------------------------------------------------------
void pointer_by_ref (int **p )
{
(*p)++;
return;
}
// ------------------------------------------------------------------------------
int main( void )
{
int array[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int *p;
p = array + 4;
printf("\nstart:\t\t*p=%d\n", *p);
pointer_by_value( p );
printf("\nafter by_value:\t*p=%d\n", *p);
pointer_by_ref( &p );
printf("\nafter by_ref:\t*p=%d\n", *p);
fflush(stdin); getchar();
exit(EXIT_SUCCESS);
}