A voir également:
- Warning: incompatible pointer
- Warning zone telechargement - Accueil - Outils
- Téléchargement et streaming illégal : voici les adresses des sites pirates que les FAI vont bloquer - Accueil - Services en ligne
- Cpu fan fail warning control - Forum Matériel & Système
- Symbole warning word ✓ - Forum Word
- Quota warning free - Guide
3 réponses
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
Bonjour,
Le mot
Il faut écrire:
Le mot
arrdésigne le tableau, mais il représente aussi l'adresse du premier élément de ton tableau. Donc prendre l'adresse de
arr, c'est obtenir l'adresse du tableau. Toi tu veux un pointeur sur le 1er
chardu tableau. C'est pour cela que tu verras souvent l'expression : il ne faut pas mettre l'opérateur d'adresse devant un tableau.
Il faut écrire:
arr_ptr = arr; // prendre l'adresse du premier élément
// ou
arr_ptr = &arr[0]; // prendre l'adresse du premier élément
Merci pour votre réponse si rapide !
En réalité, mon objectif derrière ce code est simplement de print l'adresse du tableau. Chose que je pensais faire avec le code ci dessus. En lisant votre réponse je comprends donc que " char *arr_ptr; " pointe vers le premier caractère de mon tableau de caractère, est ce cela ? Si oui, pourquoi mon code ne fonctionne-t-il quand même pas ? J'ai beaucoup de mal à saisir comment fonctionne un tableau en mémoire...
En réalité, mon objectif derrière ce code est simplement de print l'adresse du tableau. Chose que je pensais faire avec le code ci dessus. En lisant votre réponse je comprends donc que " char *arr_ptr; " pointe vers le premier caractère de mon tableau de caractère, est ce cela ? Si oui, pourquoi mon code ne fonctionne-t-il quand même pas ? J'ai beaucoup de mal à saisir comment fonctionne un tableau en mémoire...
Tu dis que ton code ne fonctionne pas. Qu'entends tu par là? Ton code doit afficher un nombre "bizarre" qui correspond à l'adresse des données de ton tableau.
C'est toi qui affecte quelque chose à
Un tableau c'est une suite consécutive d'éléments dans la mémoire. Par exemple ici, ton tableau contient 3
Si tu écris:
Si tu écris:
C'est toi qui affecte quelque chose à
arr_ptr, c'est toi qui a choisi de lui faire mémoriser l'adresse du 1er élément de ton tableau.
Un tableau c'est une suite consécutive d'éléments dans la mémoire. Par exemple ici, ton tableau contient 3
char, donc 3 octets successifs. Le premier contient le code ASCII de la lettre 'A', le second celui de la lettre 'B'...
Si tu écris:
printf("%p ", &arr[0] ); // ou printf("%p ", arr_ptr ); puisque arr_ptr == &arr[0]Ça va afficher 3 nombres (en hexa) qui correspondent aux adresses respectives de ces 3 octets, et chaque nombre ici sera égal au précédent + 1, puisqu'il est juste après.
printf("%p ", &arr[1] ); // ou printf("%p ", arr_ptr+1 ); puisque arr_ptr+1, c'est l'adresse de l'élément après celui désigné par arr_ptr
printf("%p\n", &arr[2] ); // ou printf("%p ", arr_ptr+2 );
Si tu écris:
printf("%c ", arr[0] );Ça va afficher A B C.
printf("%c ", arr[1] );
printf("%c\n", arr[2] );