2010-11-15 22 views
0

J'ai une structure et je passe cette structure à fonctionner. fonction ProType est peut-être:Types définis par l'utilisateur Passer à une fonction est un appel par valeur dans C?

typedef struct 
{ 
    //Bla Bla 
} ABC; 

void func(ABC abc) 
{ 

} 

Cet appel de fonction est par valeur ou appelez par referance? Quelqu'un dit que "C n'a pas de constructeur de copie donc nous ne pouvons pas passer les types définis par l'utilisateur avec la valeur". Est-ce que cette idée est correcte?

Répondre

4

Appelez par valeur. C est toujours appel par valeur.

(C n'a pas de constructeur de copie mais les structures peuvent encore être copiées en créant une seconde structure avec la structure originale comme initialiseur Les paramètres de fonction sont initialisés avec les valeurs que vous passez comme argument, c'est le même mécanisme

+0

Oui. Si vous voulez passer un pointeur sur la structure, vous devez le faire explicitement. – phkahler

+1

... et le pointeur est passé _by value_. –

+0

Merci, Pendant un moment, je soupçonne ma connaissance du langage C Programming :) – Murat