On me demande de faire un programme dans lequel à chaque fois je change soit la valeur de p, de q ou de i,et d'afficher leurs valeurs à chaque fois,le problème c'est qu'il s'arrête sans raison comme ça juste après les 3 premiers printf et je ne vois pas ou est l'erreur
Euh,que dois-je faire exactement ? Je viens de commencer en cours cette partie des pointeurs et j'avoue ne pas la maîtriser comme il se doit,votre aide me serai vraiment bénéfique !
Le mieux (c'est un peu sarcastique) est que p et q pointent vers un endoit qui permette de recevoir une valeur. Pour ce faire, l'utilisation de malloc() est à conseiller (posologie: une fois en début de programme, ne pas oublier le free() à la fin du traitement).
Ainsi,
#include <stdlib.h>
int main(void) {
int *p,*q;
p=malloc(sizeof(*p));
q=malloc(sizeof(*q));
....
*p=....;
....
*q=*p;
....
free(q);
free(p);
return(0);
}
devrait résoudre le problème.
- Edité par edgarjacobs 26 novembre 2017 à 17:01:44
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
tu déclares un pointeur, mais pas la zone pointée. Pour le moment, il ne pointe sur rien. Donc si tu utilises *p, ça plante. Il y a deux possibilités :
1° Utiliser une variable qui existe déjà et pointer dessus :
int *p ; // pour l'instant p ne pointe sur rien, donc *p n'existe pas
int x = 0 ; // un entier quelconque...
p = &x ; // cette fois le pointeur pointe sur quelque chose ! (et *p vaut x)
2° Allouer un emplacement pour la variable pointée en utilisant la fonction 'malloc'. Exemple :
int *p ; // p pointe sur rien
p = malloc(sizeof *p) ; // p pointe sur la case mémoire créée
*p = 25 ;
printf("%d\n", *p) ; // ça affiche bien 25
free(p) ;
Il faut choisir l'une ou l'autre méthode en fonction de ce qu'on compte faire avec le pointeur.
Merci pour vos réponses,cela a résolu mon problème !
Problèmes avec des pointeurs ! ...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent