Typedef / struct déclarations
Quelle est la différence entre ces deux déclarations, si quelqu'un pouvait expliquer en détail:
typedef struct atom {
int element;
struct atom *next;
};
et
typedef struct {
int element;
struct atom *next;
} atom;
source d'informationauteur user2780061
Vous devez vous connecter pour publier un commentaire.
Le but de
typedef
est de donner un nom à un type de spécification. La syntaxe est la suivante:Après vous avez fait cela, vous pouvez utiliser
<name>
beaucoup, comme pour tous les types intégrés de la langue de déclarer les variables.Dans votre premier exemple, vous le
<specification>
est tout à commencer avecstruct atom
mais il n'y a pas<name>
après. Si vous n'avez pas donné un nouveau nom pour le type de spécification.À l'aide d'un nom dans une
struct
déclaration n'est pas la même que la définition d'un nouveau type. Si vous souhaitez utiliser ce nom, vous avez toujours à faire précéder de lastruct
mot-clé. Donc, si vous déclarez:Vous pouvez déclarer de nouvelles variables avec:
mais vous ne pouvez pas déclarer simplement
Pour ce dernier, vous devez utiliser
typedef
.Noter que c'est l'une des différences notables entre le C et le C++. En C++, en déclarant une
struct
ouclass
type ne vous permettent de l'utiliser dans les déclarations de variables, vous n'avez pas besoin d'untypedef
.typedef
est toujours utile en C++ pour les autres complexes de type de constructions, telles que les pointeurs de fonction.Vous devriez probablement regarder au-dessus de certaines des questions posées dans le Liées barre latérale, ils nous expliquent quelques autres nuances de ce sujet.
C'est Normal
structure declaration
création de
object
Et
Ce qui est de la définition de Type de
struct atom
typeIci
atom_t
est un alias pourstruct atom
création de l'objet
La syntaxe générale de la définition de type de mot-clé sera:
typedef existing_data_type new_data_type;