Page 1 of 1

Résolu : Pointeurs et tableau en C.

PostPosted: Thu Dec 02, 2010 11:54 am
by HARD_SNAKE
Bonjour, pourquoi on initialise pas le pointeur *ptr_tab avec l'adresse d'une variable dans ce programme ? vers qu'elle adresse il pointe ?

[code:1:d801377cd8]
#include <stdio.h>

int main(){
char *ptr_tab; /*Déclaration d'un variable pointeur */
char tab[] = "HardSnake\n"; /*Déclaration d'un tableau de caractère*/
ptr_tab = tab; /*Initialisation du pointeur*/

while(*ptr_tab){ /*Execute les instructions tant que \0 n'est pas pointé */
printf("%c", *ptr_tab++); /*Affichage de la valeur pointé*/
}

return 0; /*Fin du programme*/
}
[/code:1:d801377cd8]
Merci de votre aide.

Re: Pointeurs et tableau en C.

PostPosted: Thu Dec 02, 2010 3:00 pm
by HARD_SNAKE
Résolu : *ptr_tab est une variable char (1octets), il a donc une adresse reservé en mémoire programme,
Le tableau contient une chaine de 11 caractères, il réserve donc 11 octets en mémoire.
[code:1:6fb69a4440]
Adresse Contenu Type

0x0010 0x011 Pointeur
0x0011 H Caractère 01 du tableau|C
0x0012 a Caractère 02 du tableau|h
0x0013 r Caractère 03 du tableau|a
0x0014 d Caractère 04 du tableau|i
0x0015 S Caractère 05 du tableau|n
0x0016 n Caractère 06 du tableau|e
0x0017 a Caractère 07 du tableau|
0x0018 k Caractère 08 du tableau|c
0x0019 e Caractère 09 du tableau|a
0x001A \n Caractère 10 du tableau|r
0x001B \0 Caractère 11 du tableau|a
[/code:1:6fb69a4440]

Lors de la première execution de la boucle conditionnelle while, le pointeur contient l'adresse de la variable qui contient H, lors de la seconde éxecution, on incrémente le pointeur qui contient donc l'adresse de la variable qui contient a, et ansi de suite... jusqu'au moment ou la condition est rempli (pointage de \0) et c'est la fin du programme. A chaque itération, le printf affiche le contenu de la variable pointé.