A voir également:
- Declaration d'un pointeur
- Déclaration de revenus - Guide
- Pointeur souris disparu windows 10 - Guide
- Pointeur souris - Guide
- Pointeur souris disparu pc portable asus - Guide
- Pointeur souris transparent ✓ - Forum Windows 8 / 8.1
2 réponses
Oui c'est normal...
int *p;
Là tu dis que p est un pointeur. Mais un pointeur sur quoi ? Qu'est-ce qu'une flèche sans cible ???
Bref, il faut que le pointeur pointe vers une zone mémoire. Pas trop le choix, deux solutions.
- Soit c'est un pointeur qui sert à manipuler une zone mémoire existante (ex : j'ai un pointeur qui pointe en début de liste, et je veux me balader dans la liste sans perdre l'origine).
- Soit c'est un pointeur qui est destiné à gérer une nouvelle zone mémoire à par entière, l'exemple de ton tableau de 10 éléments est parfais.
Dans le deuxième cas, il faut que tu demande au système un bout de mémoire.
Celà se fait par la fonction malloc().
Tu veux 10 éléments, ses éléments sont des entier ?
Alors il faut que tu réserve, auprès du système, un bloc mémoire de 10 fois la taille d'un entier.
En C, on écrit :
malloc( 10 * sizeof(int) );
Et les choses sont bien faites puisque malloc te renvoit un pointeur, qui pointe vers la zone mémoire alloué.
il faut donc écrire
int *p = malloc( 10*sizeof(int) );
Et AINSI p pointe vers un tableau de 10 éléments entiers.
OK ? Si il n'y a pas d'autre erreur, ton code devrais rouler comme ça.
int *p;
Là tu dis que p est un pointeur. Mais un pointeur sur quoi ? Qu'est-ce qu'une flèche sans cible ???
Bref, il faut que le pointeur pointe vers une zone mémoire. Pas trop le choix, deux solutions.
- Soit c'est un pointeur qui sert à manipuler une zone mémoire existante (ex : j'ai un pointeur qui pointe en début de liste, et je veux me balader dans la liste sans perdre l'origine).
- Soit c'est un pointeur qui est destiné à gérer une nouvelle zone mémoire à par entière, l'exemple de ton tableau de 10 éléments est parfais.
Dans le deuxième cas, il faut que tu demande au système un bout de mémoire.
Celà se fait par la fonction malloc().
Tu veux 10 éléments, ses éléments sont des entier ?
Alors il faut que tu réserve, auprès du système, un bloc mémoire de 10 fois la taille d'un entier.
En C, on écrit :
malloc( 10 * sizeof(int) );
Et les choses sont bien faites puisque malloc te renvoit un pointeur, qui pointe vers la zone mémoire alloué.
il faut donc écrire
int *p = malloc( 10*sizeof(int) );
Et AINSI p pointe vers un tableau de 10 éléments entiers.
OK ? Si il n'y a pas d'autre erreur, ton code devrais rouler comme ça.
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
13 avril 2005 à 08:55
13 avril 2005 à 08:55
int *p = (int*)malloc(10*sizeof(int))
++
++