Re: [gull] Subtilité de C n° 6 : Tableaux et pointeurs, presque pareils

Marc Mongenet marc at mongenet.ch
Fri Aug 1 05:19:11 CEST 2008


Juste pour illustrer plus clairement ce que j'ai voulu à propos
des passages par référence et valeur.

Si l'on a :

Type var;
var = bla;
func(var);

En C, quel que soit Type et quoi que fasse func, pour autant
que var ne contiennent pas un pointeur sur lui-même, on sait
que "var" vaut "bla" après l'appel "func (var)" car tous les
passages de paramètres se font par valeur. On peut aussi
dire "passage par copie" qui est peut-être plus explicite.

En C++, quel que soit le type, il faut regarder la déclaration de
la fonction pour voir si le passage est par valeur ou référence :
void func(Type); // valeur
void func(Type&); // référence

En PHP, Java, JavaScript... le passage se fait par valeur seulement
si c'est un type de base. Donc on sait que "var" vaut "bla" après
l'appel "func (var)" seulement si var est d'un type de base.
Ça introduit une différence entre les types de base et les autres
types que je trouve inélégante.

-- 
Marc Mongenet
Creator of the Web 2 Markup Language
http://w2ml.com



More information about the gull mailing list