je suis d'accord mais dans les deux ligne qui suivent j'ai donné la valeur de 10 et 20 a x et y, du coups il est pas nul la.
Attention, tu confonds une variable (destinée à contenir une donnée) et un pointeur (destiné à contenir une adresse)(*).
10 et 20 sont des données. Tu as voulu les stocker dans une variable. Dans quelle variable ? Celle pointée par le pointeur. Problème : ce pointeur ne pointe pour l'instant sur aucune variable. Comme le dit drx, c'est comme si tu voulais livrer des pizzas (les données) sans avoir l'adresse du client (le pointeur sur la variable).
Je pense que la confusion vient de l'initialisation du pointeur à NULL : elle ressemble à l'initialisation d'une variable à zéro, or ce n'est pas du tout la même chose. D'ailleurs je ne vois pas l'intérêt d'initialiser un pointeur à NULL. Ce serait moi (mais je n'ai pas assez d'expérience pour en juger), une telle initialisation serait rigoureusement proscrite. Une solution qui me paraît plus pratique est d'écrire une fonction 'initialiser' qui fait ce qu'a dit xUnkn0W-Us3rx : elle alloue un emplacement mémoire pour une variable dynamique contenant les données 10 et 20 (par exemple), et ensuite on fait pointer le pointeur sur cette variable.
Ainsi, la déclaration/initialisation du pointeur serait :
struct Coordonnees *point=initialiser(10, 20);
Bien sûr, il ne faudra pas oublier de désallouer l'emplacement mémoire à la fin.
(Ah, je viens de voir la solution de magma, qui est effectivement bien plus simple !)
(*) Je passe sous silence le fait qu'une adresse peut être considérée dans certains cas comme une donnée, ça ne ferait qu'embrouiller.
Merci de votre réponse, pourquoi un pointeur nul ? du cous la je fais comment pour que ca marche ?
pour moi j'ai crée un pointeur de type coordonnees que j'ai nommé point puis j'initialise ses champs a 10 et 20 puis je veux tripler ses champs.
Attention, tu crées un pointeur de type pointeur de struct Coordonnees (et pas simplement de type struct Coordonnees), que tu as nommé point. Ensuite, tu n'initialises pas les champs du pointeur, puisque s'agissant d'un type scalaire, il n'a pas de champ. Ce que tu essaies d'affecter (et pas d'initialiser, car après la déclaration c'est trop tard), ce sont des champs de la structure pointée par ce pointeur. Mais il n'existe pas de telle structure, et le pointeur pointe nulle part. D'où la segfault.
Merci tout le monde pour vos réponse, j'ai compris, je vous souhaite une bonne soirée
Segmentation fault dans un petit programme
× 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.
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.
« Je n’ai pas besoin de preuve. Les lois de la nature, contrairement aux lois de la grammaire, ne permettent aucune exception. »
D. Mendeleïev