Bases de la programmation en C
char s[] = "abc", t[] = "xyz";
const char *p = s;
char *const q = s;Après les déclarations ci-dessus, on écrit l'une des instructions A « p = t; », B « *p = 'x'; », C « q = t; » ou D « *q = 'x'; ». Quelle combinaison indique celles qui provoquent une erreur de compilation ?
- AA et D
- BB et C
- CB et D
Afficher la réponse et l'explication
Réponse : B. B et C
const char *p est un « pointeur sur un char const » : on ne peut pas modifier par p le caractère pointé, mais on peut faire pointer p lui-même vers une autre adresse. char *const q est un « pointeur const » : on ne peut pas modifier q, mais on peut modifier ce que q pointe. B (affectation à *p) et C (affectation à q) provoquent donc une erreur. Règle de lecture : const à gauche de * fige ce qui est pointé, const à droite de * fige le pointeur lui-même.
Continuer : 9 autres questions sur Bases de la programmation en C