« Programmation C/Types avancés » : différence entre les versions

Contenu supprimé Contenu ajouté
balise source
Ligne 29 :
=== Initialisation ===
Il y a plusieurs façons d'initialiser une variable de type structure :
<ul>
#En initialisant les champs un à un :<br /><code>struct { char ch; int nb; float pi; } variable;<br /><br />variable.ch = 'a';<br />variable.nb = 12345;<br />variable.pi = 3.141592;</code><br /> Cette façon est néanmoins pénible lorsqu'il y a beaucoup de champs.
<li>En initialisant les champs un à un :
#À la déclaration de la variable :<br /><code>struct { char ch; int nb; float pi; } variable = { 'a', 12345, 0.141592 };</code><br /> Les valeurs des champs sont assignés dans l'ordre où ils sont déclarés. S'il manque des initialisations, les champs seront initialisés à 0. L'inconvénient c'est qu'on doit connaitre l'ordre où sont déclarés les champs, ce qui peut être tout aussi pénible à retrouver.
<source lang="c">
#Une extension de la norme ISO C99 permet d'initialiser certains champs à la déclaration de la variable, en les nommants :<br /><code>struct { char ch; int nb; float pi; } variable = { .pi = 3.141592, .ch = 'a', .nb = 12345 };</code></br> Les champs non initialisés seront mis à zéro.
struct {
char ch;
int nb;
double pi;
} variable;
variable.ch = 'a';
variable.nb = 12345;
variable.pi = 3.141592;
</source>
Cette façon est néanmoins pénible lorsqu'il y a beaucoup de champs.
</li>
<li>
À la déclaration de la variable :
<source lang="c">
struct {
char ch;
int nb;
float pi;
} variable = { 'a', 12345, 0.141592 };
</source>
#À la déclaration de la variable :<br /><code>struct { char ch; int nb; float pi; } variable = { 'a', 12345, 0.141592 };</code><br /> Les valeurs des champs sont assignés dans l'ordre où ils sont déclarés. S'il manque des initialisations, les champs seront initialisés à 0. L'inconvénient, c'est qu'on doit connaitre l'ordre où sont déclarés les champs, ce qui peut être tout aussi pénible à retrouver.
</li>
<li>
#Une extension de la norme ISO C99 permet d'initialiser certains champs à la déclaration de la variable, en les nommants :<br /><code>struct { char ch; int nb; float pi; } variable = { .pi = 3.141592, .ch = 'a', .nb = 12345 };</code></br> Les champs non initialisés seront mis à zéro.
<source lang="c">
struct {
char ch;
int nb;
float pi;
} variable = { .pi = 3.141592, .ch = 'a', .nb = 12345 };
</source>
Les champs non initialisés seront mis à zéro.
</li>
</ul>
 
=== Manipulation ===