Questions sur les pointeurs
Fermé
jm22to67
Messages postés
5
Date d'inscription
dimanche 29 août 2010
Statut
Membre
Dernière intervention
29 août 2010
-
29 août 2010 à 16:29
jm22to67 Messages postés 5 Date d'inscription dimanche 29 août 2010 Statut Membre Dernière intervention 29 août 2010 - 29 août 2010 à 22:53
jm22to67 Messages postés 5 Date d'inscription dimanche 29 août 2010 Statut Membre Dernière intervention 29 août 2010 - 29 août 2010 à 22:53
A voir également:
- Questions sur les pointeurs
- Plus de pointeur sur mon pc - Guide
- [Souris] Pointeurs inversé ? - Forum souris / Touchpad
- 2 pointeurs de souris sur un écran ✓ - Forum souris / Touchpad
- Pavé tactile bloqué : comment réactiver le touchpad - Guide
- Un pointeur qui se promène sur l'écran - Forum Virus
7 réponses
dwyane346
Messages postés
147
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
6 septembre 2012
18
29 août 2010 à 17:16
29 août 2010 à 17:16
tu ne peut pas parcourir ta boucle comme sa;
tu dois sois donne une taille a ton z genre
int size = 5;
z = malloc(size * sizeof(double *));
puis pour parcourir
while (i < size)
{
i++;
}
oubien tu determine le dernier chiffre de ton pointeur genre z[size] = -1;
et tu parcour tant que tu ne trouve pas se chiffre
genre
while (z[i] != -1)
{
i++;
}
tu dois sois donne une taille a ton z genre
int size = 5;
z = malloc(size * sizeof(double *));
puis pour parcourir
while (i < size)
{
i++;
}
oubien tu determine le dernier chiffre de ton pointeur genre z[size] = -1;
et tu parcour tant que tu ne trouve pas se chiffre
genre
while (z[i] != -1)
{
i++;
}
jm22to67
Messages postés
5
Date d'inscription
dimanche 29 août 2010
Statut
Membre
Dernière intervention
29 août 2010
1
29 août 2010 à 17:43
29 août 2010 à 17:43
Ou plutôt pour être exacte:
double *ma_fonction(double *z)
{
...
while (z != NULL)
{
//instructions
z++;
}
}
double *ma_fonction(double *z)
{
...
while (z != NULL)
{
//instructions
z++;
}
}
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
29 août 2010 à 20:22
29 août 2010 à 20:22
z++ Je dois rêver...
Bien sûr qu'on peut l'écrire mais, sans contrôle, ça ne rime à rien! Et en plus il serait curieux de ne pas avoir des gros problèmes par la suite.
'z' est un pointeur, faire z++ c'est le faire pointer vers la case suivante et ... à un moment on va déborder du tableau, alors on pointera vers n'importe quoi !
Il faut donc contrôler; deux méthodes (voir le post de : dwyane346):
- soit faire avancer un index (qu'il faut donc passer à la fonction) et remplacer 'z' par 'z+index':
Bonne continuation.
Bien sûr qu'on peut l'écrire mais, sans contrôle, ça ne rime à rien! Et en plus il serait curieux de ne pas avoir des gros problèmes par la suite.
'z' est un pointeur, faire z++ c'est le faire pointer vers la case suivante et ... à un moment on va déborder du tableau, alors on pointera vers n'importe quoi !
Il faut donc contrôler; deux méthodes (voir le post de : dwyane346):
- soit faire avancer un index (qu'il faut donc passer à la fonction) et remplacer 'z' par 'z+index':
double *ma_fonction(double *z, int size) { int i = 0; while (i < size) { //instructions en utilisant '*(z+index)' ou 'z[i]' i++; } return ...; }- soit terminer le tableau par une valeur particulière:
double *ma_fonction(double *z) { while (*z != -1) { //instructions en utilisant '*z' z++; } return ...; }D'autre part ta fonction est déclarée comme retournant un pointeur vers un double.
Bonne continuation.
jm22to67
Messages postés
5
Date d'inscription
dimanche 29 août 2010
Statut
Membre
Dernière intervention
29 août 2010
1
29 août 2010 à 17:15
29 août 2010 à 17:15
Ha oui pardon c'est bien double
double *ma_fonction(double *z)
{
...
while (z != NULL)
{
//instructions
}
}
mais ce n'est pas là qu'est le problème car dans le vrai programme je ne me suis pas trompé!
double *ma_fonction(double *z)
{
...
while (z != NULL)
{
//instructions
}
}
mais ce n'est pas là qu'est le problème car dans le vrai programme je ne me suis pas trompé!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dwyane346
Messages postés
147
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
6 septembre 2012
18
29 août 2010 à 17:22
29 août 2010 à 17:22
au faite si tu as une boucle infini c est plutot normal car tu ne fai pas bouge la position du pointeur
while ( )
{
*z++; // pour le faire avancer
}
while ( )
{
*z++; // pour le faire avancer
}
jm22to67
Messages postés
5
Date d'inscription
dimanche 29 août 2010
Statut
Membre
Dernière intervention
29 août 2010
1
29 août 2010 à 17:35
29 août 2010 à 17:35
Ben en fait si je l'incrémente bien sauf que je fait plutôt
double *ma_fonction(double *z)
{
...
while (z != NULL)
{
//instructions
z++
}
}
Mais bon apparemment (d'après dwyane346) c'est pas comme ça que l'on parcours un pointeur donc c'est certainement là que j'ai fair une erreur!!!
sinon pour la deuxième question comme dois-je faire pour faire pointer mon pointeur sur le premier élément de z une fois que je l'ai incrémenté une ou plusieurs fois?
En tout cas merci pour vos réponses!!!
double *ma_fonction(double *z)
{
...
while (z != NULL)
{
//instructions
z++
}
}
Mais bon apparemment (d'après dwyane346) c'est pas comme ça que l'on parcours un pointeur donc c'est certainement là que j'ai fair une erreur!!!
sinon pour la deuxième question comme dois-je faire pour faire pointer mon pointeur sur le premier élément de z une fois que je l'ai incrémenté une ou plusieurs fois?
En tout cas merci pour vos réponses!!!
jm22to67
Messages postés
5
Date d'inscription
dimanche 29 août 2010
Statut
Membre
Dernière intervention
29 août 2010
1
29 août 2010 à 22:53
29 août 2010 à 22:53
merci pour ta réponse, cela répond de manière très claire à ce qui me posais problème... je pensais que le pointeur se suffisait à lui même mais en fait il faut contrôler avec un autre paramètre.
Maintenant mon programme fonctionne, et la fonction retourne bien un pointeur vers double...
Merci pour ces réponses
Maintenant mon programme fonctionne, et la fonction retourne bien un pointeur vers double...
Merci pour ces réponses