Un cas particulier important est celui de l'adresse indéfinie null. Cette adresse indique... aucune adresse. Si elle est passée en
paramètre, elle est recopiée. Si elle est modifiée dans la structure
locale, cette modification ne peut être récupérée par le code appelant.
Exemple :
...
int[] tableau = null ;
init(tableau) ;
System.out.println(tableau[1]) ; <--- ERREUR !
...
public static void init(int [] t) {
t = new int[10] ;
for (int i = 0 ; i < 10 ; ++i)
t[i] = 2 ;
}
Comment faire ?
...
int[] tableau = null ;
tableau = init() ;
System.out.println(tableau[1]) ; <--- OK !
...
public static int[] init() {
int[] t = new int[10] ;
for (int i = 0 ; i < 10 ; ++i)
t[i] = 2 ;
return t ;
}
Et si on veut que la fonction prenne en argument un tableau éventuellement
vide et renvoie un tableau éventuellement modifié ?
...
int[] tableau = null ;
tableau = init(tableau) ;
System.out.println(tableau[1]) ; <--- OK !
...
public static int[] init(int[] t) {
if (t == null)
t = new int[10] ;
if (t.length < 10) {
int[] u = new int[10] ;
for (int i = 0 ; i < t.length ; ++i)
u[i] = t[i] ;
t = u ;
}
for (int i = 0 ; i < 10 ; ++i)
t[i] = 2 ;
return t ;
}