2008-11-21 20 views
10

Que signifient les termes dans chacune des langues ci-dessus? Pourquoi les langues diffèrent-elles (partout où elles le font, si elles le font) à cet égard?Déclarations, définitions, initialisations en C, C++, C#, Java et Python

+0

Cela me ressemble. Sinon, pourquoi voulez-vous connaître ces différences? –

+2

@Paul, Cela peut être le travail de quelqu'un, mais cela ne signifie pas qu'il ne devrait pas être ici. J'ai obtenu mon diplôme il y a des années et c'est exactement ce que je recherchais. Je veux connaître la différence de sorte que j'utilise les termes corrects dans les courriels et les conversations - sans mentionner si je poste des questions sur SO. Les concepts sont suffisants pour la programmation, mais pas pour la communication. – sage

+0

Je voulais dire que ça sonne exactement comme la question des devoirs. L'implication de la question est que l'étudiant devrait faire des recherches, pas seulement chercher une réponse à partir d'un site web. Ce qui ne veut pas dire que l'assignateur de devoirs n'a pas écrit une bonne question, juste que la question ne devrait pas être coupée et collée ici. –

Répondre

11

C/C++:

Une déclaration est une déclaration qui dit: « ici est le nom de quelque chose et le genre de chose qu'il est, mais je ne vous dis rien de plus à ce sujet ».

A définition est une déclaration qui dit "voici le nom de quelque chose et ce qu'il est exactement". Pour les fonctions, ce serait le corps de la fonction; pour les variables globales, ce serait l'unité de traduction dans laquelle réside la variable.

Une initialisation est une définition dans laquelle la variable reçoit également une valeur initiale. Certaines langues initialisent automatiquement toutes les variables à une valeur par défaut telle que 0, false ou null. Certains (comme C/C++) ne le sont pas toujours: toutes les variables globales sont initialisées par défaut, mais les variables locales sur la pile et les variables allouées dynamiquement sur le tas ne sont PAS initialisées - elles ont un contenu indéfini, donc vous devez initialiser explicitement leur. C++ a aussi des constructeurs par défaut, ce qui est une toute autre boîte de Pandore.

Exemples:


// In global scope: 
extern int a_global_variable; // declaration of a global variable 
int a_global_variable;   // definition of a global variable 
int a_global_variable = 3;  // definition & initialization of a global variable 

int some_function(int param); // declaration of a function 
int some_function(int param) // definition of a function 
{ 
    return param + 1; 
} 

struct some_struct; // declaration of a struct; you can use pointers/references to it, but not concrete instances 
struct some_struct // definition of a struct 
{ 
    int x; 
    int y; 
}; 

class some_class; // declaration of a class (C++ only); works just like struct 
class some_class // definition of a class (C++ only) 
{ 
    int x; 
    int y; 
}; 

enum some_enum; // declaration of an enum; works just like struct & class 
enum some_enum // definition of an enum 
{ 
    VALUE1, 
    VALUE2 
}; 

Je ne suis pas aussi familier avec les autres langues que vous avez posées au sujet, mais je crois qu'ils ne font pas beaucoup d'une distinction entre les déclarations et les définitions. C# et Java ont une initialisation par défaut pour tous les objets - tout est initialisé à 0, false, ou null si vous ne l'initialisez pas explicitement. Python est encore plus laxiste, car les variables n'ont pas besoin d'être déclarées avant d'être utilisées. Puisque les liaisons sont résolues au moment de l'exécution, il n'y a pas non plus de réel besoin de déclarations de fonctions.