Pointeur ou *pointeur en C++?
Résolu/Fermé
olivbarb
Messages postés
303
Date d'inscription
dimanche 5 août 2007
Statut
Membre
Dernière intervention
10 mars 2013
-
12 déc. 2007 à 21:42
le père - 12 déc. 2007 à 22:56
le père - 12 déc. 2007 à 22:56
A voir également:
- Pointeur ou *pointeur en C++?
- Pointeur souris - Guide
- Pointeur souris disparu windows 10 - Guide
- Pointeur souris disparu pc portable asus - Guide
- Cercle bleu pointeur souris clignote en permanence windows 10 ✓ - Forum Windows 10
- Le pointeur de ma télécommande lg ne fonctionne plus ✓ - Forum Matériel & Système
3 réponses
Bonsoir
Encore et toujours le problème des pointeurs non initialisés.
Un pointeur est fait pour contenir l'adresse d'une variable.
Pour pouvoir faire *pointeur=nombre, il faut que pointeur contienne l'adresse de quelque chose, sinon nombre va être mis où ???
Dans ton programme ci-dessus tu utilises carac et caractCrypter dans jamais les avoir initialisés. Tu vas donc écrire n'importe où dans la mémoire, ça plante.
Par contre quand tu définis carac comme un char, tu as défini une variable - un emplacement mémoire qui peut effectivement contenir un caractère, donc pas de problème pour écrire dedans. Quant aux fonctions fread et fwrite qui attendent un pointeur sur caractère, il faut leur donner non pas le caractère lui même, mais son adresse grâce à l'opérateur &
Encore et toujours le problème des pointeurs non initialisés.
Un pointeur est fait pour contenir l'adresse d'une variable.
Pour pouvoir faire *pointeur=nombre, il faut que pointeur contienne l'adresse de quelque chose, sinon nombre va être mis où ???
Dans ton programme ci-dessus tu utilises carac et caractCrypter dans jamais les avoir initialisés. Tu vas donc écrire n'importe où dans la mémoire, ça plante.
Par contre quand tu définis carac comme un char, tu as défini une variable - un emplacement mémoire qui peut effectivement contenir un caractère, donc pas de problème pour écrire dedans. Quant aux fonctions fread et fwrite qui attendent un pointeur sur caractère, il faut leur donner non pas le caractère lui même, mais son adresse grâce à l'opérateur &
Même si j'initialise mes 2 pointeurs a NULL, cela ne change rien. De plus quand je défini char *caract = NULL, un emplacement mémoire est bien réservé. Emplacement qui ne contiendra qu'une adresse, non ?
quand je défini char *caract = NULL
pardon fausse manoeuvre
quand je défini char *caract = NULL tu réserves de la place pour un pointeur, mais il ne pointe sur aucune zone mémoire. Tu n'as pas réservé de place pour un caractère.
Il fait faire, entre autres possibilités :
caract = &caractere ( où caractère est déjà défini) ou
caract= malloc(sizeof(char)) (allocation dynamique) ou
caract = autreptr (où autreptr est un char * déjà initialisé)
quand je défini char *caract = NULL tu réserves de la place pour un pointeur, mais il ne pointe sur aucune zone mémoire. Tu n'as pas réservé de place pour un caractère.
Il fait faire, entre autres possibilités :
caract = &caractere ( où caractère est déjà défini) ou
caract= malloc(sizeof(char)) (allocation dynamique) ou
caract = autreptr (où autreptr est un char * déjà initialisé)