Questions sur les pointeurs
jm22to67 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
jm22to67 Messages postés 5 Date d'inscription Statut Membre Dernière intervention - 29 août 2010 à 22:53
jm22to67 Messages postés 5 Date d'inscription Statut Membre Dernière intervention - 29 août 2010 à 22:53
A voir également:
- Questions sur les pointeurs
- Plus de pointeur sur mon pc - Guide
- Forum Photoshop
- Forum C
- Forum souris / Touchpad
- Forum Windows
7 réponses
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++;
}
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++;
}
}
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 er à 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 er à 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.
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 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
}
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!!!
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