Écrire la définition d'un nouveau type nommé
Result qui soit
une structure constituée d'un entier nommé
count
et de deux réels nommés
x1 et
x2.
typedef struct
{
int count;
double x1, x2;
} Result;
(voir
cette section)
Écrire la définition d'un nouveau type nommé
Date qui soit
une structure constituée de trois entiers nommés
year,
month et
day.
typedef struct
{
int year, month, day;
} Date;
(voir
cette section)
Écrire la définition d'un nouveau type nommé
Time qui soit
une structure constituée de trois entiers nommés
hour,
minute et
second et d'un réel nommé
subsecond.
typedef struct
{
int hour, minute, second;
double subsecond;
} Time;
(voir
cette section)
Écrire la définition d'un nouveau type nommé
TimeInterval qui soit
une structure constituée de deux membres de type
Time (supposé
existant) nommés
start et
stop.
typedef struct
{
Time start, stop;
} TimeInterval;
(voir
cette section)
Écrire la définition d'un nouveau type nommé
DateTime qui soit
une structure constituée d'un membre de type
Date (supposé
existant) nommé
date et d'un membre de type
Time (supposé
existant) nommé
time.
typedef struct
{
Date date;
Time time;
} DateTime;
(voir
cette section)
Écrire la définition d'un nouveau type nommé
Dog qui soit
une structure constituée d'une chaîne nommée
name,
pouvant contenir jusqu'à quinze caractères utiles,
et d'un entier nommé
age.
typedef struct
{
char name[16];
int age;
} Dog;
(voir
cette section)
Écrire la définition d'un nouveau type nommé
Car qui soit
une structure constituée d'une chaîne nommée
plate,
pouvant contenir jusqu'à huit caractères utiles,
et d'un entier nommé
horsepower.
typedef struct
{
char plate[9];
int horsepower;
} Car;
(voir
cette section)
La variable
v étant une structure
ayant un membre
count de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ce membre.
La variable
v étant une structure
ayant un membre
x1 de type réel,
écrire l'appel qui provoque l'affichage de la valeur de ce membre.
La variable
v étant une structure
ayant trois membres
year,
month et
day de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ces membres.
printf("%d %d %d\n", v.year, v.month, v.day);
(voir
cette section)
La variable
v étant une structure
ayant un membre
plate de type chaîne de caractères
et un membre
horsepower de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ces membres.
La variable
v étant
un pointeur vers une structure
ayant un membre
count de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ce membre.
La variable
v étant
un pointeur vers une structure
ayant un membre
x1 de type réel,
écrire l'appel qui provoque l'affichage de la valeur de ce membre.
La variable
v étant
un pointeur vers une structure
ayant trois membres
year,
month et
day de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ces membres.
printf("%d %d %d\n", v->year, v->month, v->day);
(voir
cette section)
La variable
v étant
un pointeur vers une structure
ayant un membre
plate de type chaîne de caractères
et un membre
horsepower de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ces membres.
La variable
v étant une structure
ayant un membre
date étant lui-même une structure
ayant un membre
day de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
La variable
v étant une structure
ayant un membre
dog étant lui-même une structure
ayant un membre
name de type chaîne de caractères,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
La variable
v étant
un pointeur vers une structure
ayant un membre
date étant lui-même une structure
ayant un membre
day de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
La variable
v étant
un pointeur vers une structure
ayant un membre
dog étant lui-même une structure
ayant un membre
name de type chaîne de caractères,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
La variable
v étant une structure
ayant un membre
date étant lui-même
un pointeur vers
une structure
ayant un membre
day de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
La variable
v étant une structure
ayant un membre
dog étant lui-même
un pointeur vers
une structure
ayant un membre
name de type chaîne de caractères,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
La variable
v étant
un pointeur vers une structure
ayant un membre
date étant lui-même
un pointeur vers
une structure
ayant un membre
day de type entier,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
La variable
v étant
un pointeur vers une structure
ayant un membre
dog étant lui-même
un pointeur vers
une structure
ayant un membre
name de type chaîne de caractères,
écrire l'appel qui provoque l'affichage de la valeur de ce dernier membre.
Le type
MyType étant une structure contenant (dans l'ordre)
un entier et deux réels,
déclarer une variable
v de ce type,
initialisée avec
des valeurs explicites et appropriées pour chacun des membres.
Le type
MyType étant une structure contenant (dans l'ordre)
une chaîne de caractères et un entier,
déclarer une variable
v de ce type,
initialisée avec
des valeurs explicites et appropriées pour chacun des membres.
Le type
MyType étant une structure contenant (dans l'ordre)
- un premier membre qui est lui-même une structure contenant
(dans l'ordre) une chaîne de caractères et un entier,
- un second membre qui est lui-même une structure contenant
(dans l'ordre) un entier et deux réels,
déclarer une variable
v de ce type,
initialisée avec
des valeurs explicites et appropriées pour chacun des membres.
MyType v={{"Rin-Tin-Tin", 6},
{1, 1.3, 1.3}};
(voir
cette section)
Le type
MyType étant une structure contenant (dans l'ordre)
- un premier membre qui est lui-même une structure contenant
(dans l'ordre) un entier et deux réels,
- un second membre qui est lui-même une structure contenant
(dans l'ordre) une chaîne de caractères et un entier,
déclarer une variable
v de ce type,
initialisée avec
des valeurs explicites et appropriées pour chacun des membres.
Le type
MyType étant une structure contenant (dans l'ordre)
un entier et deux réels,
déclarer une variable
v comme un tableau de deux éléments
de ce type,
initialisée avec des valeurs explicites et
appropriées pour chacun des membres.
MyType v[2]={{2, -1.5, 2.7},
{1, 1.3, 1.3}};
(voir
cette section)
Le type
MyType étant une structure contenant (dans l'ordre)
une chaîne de caractères et un entier,
déclarer une variable
v comme un tableau de deux éléments
de ce type,
initialisée avec des valeurs explicites et
appropriées pour chacun des membres.
MyType v[2]={{"Rin-Tin-Tin", 6},
{"Milou", 4}};
(voir
cette section)
Vrai ou faux ? Le langage C autorise qu'une structure soit transmise par valeur
comme paramètre d'une fonction.
Vrai ou faux ? Le langage C interdit qu'une structure soit transmise par valeur
comme paramètre d'une fonction.
Vrai ou faux ? Le langage C autorise qu'une structure soit transmise par valeur
comme paramètre d'une fonction
uniquement si cette structure ne contient
aucun membre de type tableau.
Vrai ou faux ? Le langage C autorise qu'une fonction renvoie par valeur
un résultat de type structure.
Vrai ou faux ? Le langage C interdit qu'une fonction renvoie par valeur
un résultat de type structure.
Vrai ou faux ? Le langage C autorise qu'une fonction renvoie par valeur
un résultat de type structure
uniquement si cette structure ne contient
aucun membre de type tableau.
Vrai ou faux ? Le langage C autorise qu'une variable de type structure
soit affectée à une autre de même type.
Vrai ou faux ? Le langage C interdit qu'une variable de type structure
soit affectée à une autre de même type.
Vrai ou faux ? Le langage C autorise qu'une variable de type structure
soit affectée à une autre de même type
uniquement si cette structure ne contient
aucun membre de type tableau.
Vrai ou faux ? L'opérateur
sizeof appliqué à une structure donne
systématiquement comme résultat la somme des valeurs de
sizeof
appliqué à chacun de ses membres.
Vrai ou faux ? L'opérateur
sizeof appliqué à une structure peut donner
un résultat différent de la somme des valeurs de
sizeof
appliqué à chacun de ses membres.
Vrai ou faux ? L'opérateur
sizeof appliqué à une structure peut donner
un résultat supérieur à la somme des valeurs de
sizeof
appliqué à chacun de ses membres.
Vrai ou faux ? L'opérateur
sizeof appliqué à une structure peut donner
un résultat inférieur à la somme des valeurs de
sizeof
appliqué à chacun de ses membres.
Vrai ou faux ? L'opérateur
sizeof appliqué à deux structures qui sont
constituées des mêmes membres mais ordonnés différemment donne
systématiquement le même résultat dans les deux cas.
Vrai ou faux ? L'opérateur
sizeof appliqué à deux structures qui sont
constituées des mêmes membres mais ordonnés différemment peut donner
des résultats différents pour chacun des deux cas.
Dans quel cas peut-on se permettre de recopier sans précaution
une variable de type structure ?
Lorsqu'elle n'est composée que de types simples qui ne nécessitent
pas de gestion de ressources (arithmétiques par exemple).
(voir
cette section)
Dans quel cas s'interdit-on de recopier sans précaution une variable
de type structure ?
Lorsqu'elle à la responsabilité d'une ressource qui lui est propre
(allocation dynamique de mémoire par exemple).
(voir
cette section)
Si nous souhaitons passer à une fonction un paramètre
v de type
structure
MyType que nous nous
interdisons de recopier et
de modifier, quel type de paramètre formel doit on déclarer ?
Dans quel fichier doit-être
définie une fonction qualifiée
de
inline static ?
Dans quel cas une fonction mérite-t-elle
d'être qualifiée de
inline static ?
Lorsqu'elle ne contient que peu d'instructions et que celles-ci
sont simples (quelques opérations arithmétiques par exemple).
(voir
cette section)
Dans quel cas une fonction ne mérite-t-elle pas
d'être qualifiée de
inline static ?
Lorsqu'elle contient beaucoup d'instructions ou que celles-ci sont
coûteuses (appels de fonction ou allocation de mémoire par exemple).
(voir
cette section)
Quel est l'intérêt de qualifier une fonction de
inline static ?
Le compilateur optimisera plus efficacement
le code qui y fait appel.
(voir
cette section)