Exercice langage C : Les Variables

1.

(*2) Pourquoi doit-on placer un’&’ devant la variableime dans le code suivant :

int ime;

scanf("%d", &ime);

2.

Donnez une forme équivalente à l’expression&tab[0].

3.

Que vaut la variableille dans le code suivant?

float ille;

ille = 2/3

*100.0;

Pourquoi?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1. Soit la déclaration suivante : short ly[5] = {1, 2 }.
Que vaut ly[3] ?
Réponse : ly[3] vaut ’\0’.
La taille du tableau (5) est supérieure au nombre d’éléments indiqués dans l’initialisation (2). Dans ce cas, les éléments manquants sont initialisés à zéro, c’est à dire ’\0’.
2. Donnez une forme équivalente à l’expression p->champ.
Réponse : p->champ  (p).champ
p est un pointeur vers une structure dont un champ a pour nom champ.
Les parenthèses sont nécessaires, car l’opérateur . est de priorité plus élevée que l’opérateur unaire .
3. Dans le code suivant :
char ch[] = "Bonjour", *pc = ch ;
while (*pc) pc++ ;
Que vaut pc après l’exécution de l’instruction while ? Vers quel caractère pointe-t-il ?
Réponse : pc vaut &pc[7] et le caractère pointé est le caractère de ?n de chaine ’\0’.
L’instruction while peut s’écrire ainsi :
while ( *pc != ’\0) {
pc = pc + 1 ;
}
Comme pc est initialisé avec l’adresse du premier caractère de la chaine ch, la boucle
va être exécutée tant que le caractère pointé n’est pas le caractère de ?n de chaine. À la
sortie de la boucle, pc vaut &pc[7] et le caractère pointé est le caractère de ?n de chaine
’\0’.