printf éclaircissement

Le
j4e8a16n
Bonjour à tous,

const char *a = "allo";

printf("%s %c", a, *a);

Pourquoi a pour le mot entier et *a pour le caractère?

JPD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric Levenez
Le #19292831
Le 08/05/09 14:14, dans
« j4e8a16n »
const char *a = "allo";

printf("%s %cn", a, *a);

Pourquoi a pour le mot entier et *a pour le caractère?



%s attend en paramètre l'adresse d'une chaîne, donc "a".

%c attend en paramètre un caractère (en entier), donc "*a" qui est identique
à "a[0]", soit le premier caractère de la chaîne "a".

--
Éric Lévénez
FAQ de fclc :
-ed-
Le #19297321
On 8 mai, 14:14, j4e8a16n
Bonjour à tous,

const char *a = "allo";

printf("%s     %cn", a, *a);

Pourquoi a pour le mot entier et *a pour le caractère?



Parce que a est un pointeur

La valeur de a est l'adresse du premier élément de la chaine
"allo" (qui est, rappelons-le, un tableau de char initialisé, non
modifiable et terminé par un 0)
La valeur de *a est donc l'élément pointé, soit le premier caractèr e
de la chaine. *a est équivalent à *(a + 0) qui peut s'écrire a[0].
Publicité
Poster une réponse
Anonyme