Manipulation des pointeurs
Bonsoir !
Le programme devrait afficher le contenu et les adresses des variable.
Mais à l'exécution, il plante (Version 1)!
A la version 2, quand je modifie le programme, il affiche un résultat.
Pourrais avoir des orientations dans la premiere version ?
Version 1
Citation:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
int main()
{
int *a, *b, *c;
*a = 4;
*b = 5;
printf("contenu *a : %d, addresse a : %p\n", *a, a);
printf("Contenu *b : %d, addresse b : %p\n", *b, b);
*c = *a;
*a = *b;
*b = *c;
printf("Contenu *a : %d, addresse a: %p\n", *a, a);
printf("Contenu *b : %d, addresse b: %p\n", *b, b);
do{}while(kbhit() == 0);
return 0;
} |
Version 2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
int main()
{
int *a, *b, *c;
*a = 4;
*b = 5;
printf("contenu *a : %d, addresse a : %p\n", a, a);
printf("Contenu *b : %d, addresse b : %p\n", b, b);
c = a;
a = b;
b = c;
printf("Contenu *a : %d, addresse a: %p\n", a, a);
printf("Contenu *b : %d, addresse b: %p\n", b, b);
do{}while(kbhit() == 0);
return 0;
} |
[/QUOTE]
1 pièce(s) jointe(s)
Manipulation des pointeurs
Obsidian : j'ai pas l'air de bien comprendre tes explications !:roll:
Quel lien directe y'a t'il entre la déclaration des pointeurs et lors de l'affectation des valeurs ?
Aussi, avec un peu de débrouillardise, je change la place de b et c, il me semble que le programme donne un meilleur résultat ! :roll:
Mais j'ai pas d'explications !!!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int *a, *c, *b;
*a = 4;
*b = 5;
printf("contenu de *a : %d, addresse de a : %p\n", *a, a);
printf("Contenu de *b : %d, addresse de b : %p\n", *b, b);
printf("\n");
printf("Après permutation : \n");
c = a;
a = b;
b = c;
printf("\n");
printf("Contenu de *a : %d, addresse de a: %p\n", *a, a);
printf("Contenu de *b : %d, addresse de b: %p\n", *b, b); |
Pièce jointe 189695
Manipulation des pointeurs
Pour ce code :
Je comprends bien que : *p affichera 7, après l'affectation *p=7, c'est juste !!!
Par contre je comprends pas pourquoi pour: *p sans avoir affecté une valeur, il choisit d'afficher 0 ?
Est-ce parce que aucune valeur n'a été pointé vers la variable pointeur *p ?
Si c'est le cas, devrais-je donc comprendre que pour manipuler un pointeur il faudra que je précise une variable pointé ?:roll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <stdio.h>
int main (void)
{
/* Ligne supprimée */
int *p;
/* Ligne supprimée */
/* Ligne supprimée */
/* Ligne supprimée */
printf ("Contenu de p : %p\n",p);
printf ("Valeur de ce qui est pointé par p : %d\n",*p);
*p = 7; /* Modifie ce qui est pointé par p */
/* Ligne supprimée */
printf ("Contenu de p : %p\n",p);
printf ("Valeur de ce qui est pointé par p : %d\n",*p);
return 0;
} |
Manipulation des pointeurs
Ok ! C'est pigé !!!
Merci à tous !:resolu: