Changer une adresse?
Fermé
seljazou
Messages postés
175
Date d'inscription
dimanche 6 septembre 2009
Statut
Membre
Dernière intervention
25 décembre 2009
-
23 nov. 2009 à 14:51
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 23 nov. 2009 à 15:00
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 23 nov. 2009 à 15:00
Bonjour,
Peut on affecter à un pointeur une valeur? ( à part NULL)...
Et à quoi servent les opérations sur les pointeurs, (+, -, ++, = etc) , serent t elles à modifier les adresses, les déplacer?
Je croyais qu'on ne peut pas changer la valeur d'une adresse....
décidement !!!!!!
merci de répondre.
Peut on affecter à un pointeur une valeur? ( à part NULL)...
Et à quoi servent les opérations sur les pointeurs, (+, -, ++, = etc) , serent t elles à modifier les adresses, les déplacer?
Je croyais qu'on ne peut pas changer la valeur d'une adresse....
décidement !!!!!!
merci de répondre.
A voir également:
- Changer une adresse?
- Changer dns - Guide
- Darkino nouvelle adresse - Guide
- Rechercher ou entrer l'adresse - Guide
- Créer une adresse hotmail - Guide
- Adresse mac - Guide
1 réponse
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
662
23 nov. 2009 à 15:00
23 nov. 2009 à 15:00
d'un coté oui, tu n'as pas trop à te soucier des adresses mémoire, c'est l'OS qui se charge de les attribuer à ton programme. Ensuite tu les manipules via des nom de variables, des pointeurs, les "malloc" renvoient une adresse mémoire lorsque tu fais de l'allocation dynamique.
Mais il y a quelques astuces : dans un tableau [] par exemple, toutes les valeurs sont mises à la suite dans la mémoire (c'est dit dans la norme C / C++).
Donc tu peux faire, si ton tableau est par exemple de taille 25 et de type int
monTableau est comme (presque!) un pointeur vers le premier élément. C'est un peu comme si tu faisais &monTableau[0].
faire *monTableau retourne un int qui est le premier élément du tableau (monTableau[0]) (si je ne me trompe pas trop :D)
tu pourrais faire *(monTableau + sizeof(int)) pour accéder au deuxième élément (monTableau[1]).
de même *(monTableau + 2*sizeof(int)) pour accéder à monTableau[2]) ....
Ce n'est pas très conseillé car peu clair comme pratique. Tu peux aller voir ceci :https://c.developpez.com/faq/?page=Pointeurs-tableaux-et-chaines-de-caracteres , il y a plusieurs articles qui devraient d'éclairer.
Attention aux erreurs d'exécution "segmentation fault" si tu essayes d'accéder à une partie de la mémoire qui n'est pas allouée au programme !
Mais il y a quelques astuces : dans un tableau [] par exemple, toutes les valeurs sont mises à la suite dans la mémoire (c'est dit dans la norme C / C++).
Donc tu peux faire, si ton tableau est par exemple de taille 25 et de type int
monTableau est comme (presque!) un pointeur vers le premier élément. C'est un peu comme si tu faisais &monTableau[0].
faire *monTableau retourne un int qui est le premier élément du tableau (monTableau[0]) (si je ne me trompe pas trop :D)
tu pourrais faire *(monTableau + sizeof(int)) pour accéder au deuxième élément (monTableau[1]).
de même *(monTableau + 2*sizeof(int)) pour accéder à monTableau[2]) ....
Ce n'est pas très conseillé car peu clair comme pratique. Tu peux aller voir ceci :https://c.developpez.com/faq/?page=Pointeurs-tableaux-et-chaines-de-caracteres , il y a plusieurs articles qui devraient d'éclairer.
Attention aux erreurs d'exécution "segmentation fault" si tu essayes d'accéder à une partie de la mémoire qui n'est pas allouée au programme !