Nous sommes actuellement le 05 Juil 2026, 10:39

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 
Auteur Message
MessagePublié: 11 Nov 2002, 12:05 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
Je suis un peu confus avec mon livres.


Lorsque je fais :
Code :
char test[10];

cout << (int *) test << endl;


j'obtient l'adresse de test, n'est-ce pas?

Mais que me donne :

Code :
   cout << (int *) &test+3 << endl;
   cout << (int *) &test[3] << endl;


quel est la différence? car j'obtient deux adresse diférente.

Si par exemple je créerais a la place un pointeur de string :

Code :
char test = new char [10];

cout << (int *) test << endl; // toujours l'adresse ou pointe test


Comment ferais-je pour savoir l'adresse du pointeur test et non pas ou il pointe?

Merci


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2002, 14:45 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
test est un tableau, tu auras donc une adresse pour chaques élément du tableau.

Mes notions de pointeur étant plustôt lointaine (je fais tout ce que je peux pour m'éloigner du c/c++!!!) je ne pourrai pas t'en dire plus!

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2002, 15:14 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 16 Avr 2002, 01:08
Message(s) : 138
Localisation : Québec
Il faut d'abord savoir que &test+3 et &test[3] ne représente pas la même chose. Il faut aussi savoir qu'un pointeur est une adresse, ou devrais-je dire contient une adresse.

test[3] -> contenu du deuxième élément du tableau test
&test[3] -> adresse du deuxième élément du tableau test
test+3 -> adresse de test (qui est un int) à laquelle on additionne la valeur 3
&test+3 -> équivalent à test+3
(test+3 n'est donc pas équivalent à test[3])

&test[3] = test+3
test[3] = *(test+3)

test est déjà une adresse mémoire alors on ne peut pas avoir l'adresse d'une adresse à moins de stocker l'adresse de test dans une variable. Mais là, ca n'a plus de sens.

Je sais que je ne suis pas toujours clair, mais si tu ne comprends pas bien, dis-le. :) Ça va tellement mieux de dessiner des petites boîtes pour expliquer les pointeurs. ;)

Quand tu vas avoir bien compris les pointeurs, tu vas réaliser toute la puissance, les dangers aussi ;), du C/C++. :D

_________________
La vie est comme un pot de miel avec de la merdouille au fond. Plus tu veux du miel, plus t'as de la merdouille.


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2002, 22:37 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
test[3] ça serait pas le contenu du 4e élément du tableau plustôt que le 2e?

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Nov 2002, 23:13 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
oui, c'est le 4 eme ;-)

Ok, c'est clair

juste une chose

dans :
Code :
&test+3


j'ajoute +3 a l'adresse du int, donc si c'est des int a 4 bytes (32 bits) il va ajouté 0x0b a l'adresse pour pointer 3 int plus loin, c'est bien ca?


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Nov 2002, 18:30 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 16 Avr 2002, 01:08
Message(s) : 138
Localisation : Québec
Oui c'est le 4e. :) J'suis bon moi quand j'veux! :D

Le fait d'ajouter 3 à test signifie qu'on veut pointer 3 cases mémoire plus loin dans la RAM. Le fait de savoir si c'est 0x0b, c'est trop bas niveau, c'est au OS de gérer ça. Quand on programme dans un langage du niveau du C/C++, faut penser en terme de case mémoire des cases de grosseur dépendant du type de donnée.

_________________
La vie est comme un pot de miel avec de la merdouille au fond. Plus tu veux du miel, plus t'as de la merdouille.


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site