Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

printf éclaircissement

2 réponses
Avatar
j4e8a16n
Bonjour =E0 tous,

const char *a =3D "allo";

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

Pourquoi a pour le mot entier et *a pour le caract=E8re?

JPD

2 réponses

Avatar
Eric Levenez
Le 08/05/09 14:14, dans
,
« j4e8a16n » a écrit :

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 : <http://www.levenez.com/lang/c/faq/&gt;
Avatar
-ed-
On 8 mai, 14:14, j4e8a16n wrote:
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].