Structures - prob d'execution !!
Résolu
onzepattes
-
onzepattes -
onzepattes -
Bonjour,
j'ai comme programme :
#include<stdio.h>
typedef struct Point Point;
struct Point {
float x;
float y;
};
int main() {
Point *point;
point->x = 0.0;
point->y = 0.0;
printf("%f", point->x);
return 0;
}
je le compile avec gcc (sous debian), ca se compile sans erreur, mais quand j'execute (./a.out) ca me donne l'erreur : commande interrompue
Je sais pas d'ou vient l'erreur !!
Merci d'avance
j'ai comme programme :
#include<stdio.h>
typedef struct Point Point;
struct Point {
float x;
float y;
};
int main() {
Point *point;
point->x = 0.0;
point->y = 0.0;
printf("%f", point->x);
return 0;
}
je le compile avec gcc (sous debian), ca se compile sans erreur, mais quand j'execute (./a.out) ca me donne l'erreur : commande interrompue
Je sais pas d'ou vient l'erreur !!
Merci d'avance
A voir également:
- Structures - prob d'execution !!
- Le service spouleur d'impression local n'est pas en cours d'exécution - Guide
- Processus d'execution client serveur - Forum Windows 10
- Il permet l’exécution des logiciels applicatifs et gère l’utilisation des ressources matérielles (mémoire, processeur, périphériques). - Forum Pilotes (drivers)
- Erreur d'exécution 13 incompatibilité de type ✓ - Forum Programmation
- Au démarrage de l’ordinateur, le d' se lance. il permet l’exécution des logiciels applicatifs et gère l’utilisation des ressources matérielles (mémoire, processeur, périphériques). - Forum Alimentation PC
1 réponse
Bonjour
Il FAUT réserver la mémoire correspondant à la structure, soit en définissant un variable Point (sans *) et en faisant pointer ton pointeur sur cette variable, soit avec un malloc :
Point *point;Avec ça, tu définis un pointeur sur une structure, c'est à dire une variable qui contient l'adresse d'une structure. Mais tu n'as pas défini de variable structure, donc ton pointeur pointe n'importe où dans la mémoire. Dès que tu essayes de t'en servir avec
point->x = 0.0;, tu vas taper n'importe où dans la mémoire et le programme plante.
Il FAUT réserver la mémoire correspondant à la structure, soit en définissant un variable Point (sans *) et en faisant pointer ton pointeur sur cette variable, soit avec un malloc :
...
int main() {
Point *point;
Point p; // on crée une variable de type Point
point = &p; // on fait pointer point sur p
point->x = 0.0; // ou p.x=0.0; ce serait la même chose
...
</code c>
ou bien
<code>int main() {
Point *point;
point = (Point *) malloc(sizeof(Point)); // on alloue de la mémoire pour un Point
point->x = 0.0;
... // sans oublier à la fin :
free(point); // on désalloue la mémoire
...
int main(void) { Point point; point.x=0; ... }