Changer une adresse?
seljazou
Messages postés
185
Statut
Membre
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
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
- Adresse mac - Guide
- Créer une adresse hotmail - Guide
- Darkino nouvelle adresse - Guide
- Comment saisir une adresse url - Guide
1 réponse
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 !