cs_firemax
Messages postés24Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention19 août 2005
-
3 juin 2005 à 17:57
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 2010
-
4 juin 2005 à 22:03
Bonjour
Suite a un de mes autres messages j'ai quelques question sur les pointeurs
1/Un pointeur represente bien une adresse d'une autre fonction ? Donc que designe ceci :
char *tab[100];
2/Soit txt un tableau (char txt[100])
char *ptr = txt;
ptr contien quoi ? l'integralite de txt ?
3/if(*ptr == ' ') donc si la position actuel de ptr est un espace le
programe rentre dans la boucle ? Mais alors ptr++ incremente ptr
de 1 mais comment savoir que c'est la position de ptr dans la chaine
txt ou ce que represente l'adresse de ptr
4/tab[i] = ptr; ptr contiens alors la position du mot mais comment ca
se fait que le mot qui suivent ne figure pas dans cette chaine ??
Je suis vraiment debutant donc pas la tete et je ne cherche qu'a comprendre
xboxut
Messages postés172Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention27 novembre 20091 3 juin 2005 à 18:13
char *tab[100]; c un tableau de pointeur char de 100 entree
ptr contient l adresse de la premiere case de txt soit l adresse de txt[0]
*ptr represente la valeure de la variable a l adresse ptr, kan tu incremente ptr de 1 tu ogmente l adresse de 8 bits,si tu augmente *ptr de 1 tu ogmente de 1 la valeur pointé
par ptr
j comprend pas la 4 eme question
for(int j = 0; j < strlen(txt); j++) // on parcour la chaine
{
if(*ptr == ' ')// si le charactere pointé a la valeur d un espace
{
*ptr = 0; //alors on met le charactere pointé a 0
ptr++;//on ajoute 1 mot a l adresse
tab[i] = ptr; //la chepas ce qu on fait :p ca a pas de rapport ac ce qu il y a avant et c con :p de choper l adresse de chaque char
i++;
j++;
}
ptr++;
}
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 3 juin 2005 à 18:13
1) un pointeur contient une adresse, pas forcément celle d'une fonction. Ca peut aussi être une variable.
char* tab[100] est tableau contenant 100 char*. Il faut donc le voir comme un tableau et non un pointeur
2) ptr pointe vers le début du tableau txt. En gros c'est la même
chose, sauf que tu peux modifier ptr (ptr++), pas txt. Il faut que tu
gardes en mémoire que un pointeur contient juste une adresse. La taille
de ptr ne dépend pas de celle de txt. En ce sens un pointeur est
seulement un entier que tu interprètes différemment (tu l'intèrprètes
par indirection en général)
3) pas conpris la question
4) on a mis des 0 à la place des espaces, c'et pour ca que les mots qui
suivent n'apparaissent pas (c'est le caractère 0 ou '\0' qui marque la
fin d'un chaine)
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 4 juin 2005 à 19:30
pour reprendre toute ces question je ne comprend pas trop l'utiliter des pointeur
programmant en java la base et n'ayant pas de pointeur g du mal a voir une utilité
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 4 juin 2005 à 20:03
#include
#include <stdlib.h>
using namespace std;
void Affecter1(int j)
{
j = 3;
return;
}
void Affecter2(int *j)
{
*j = 3;
return;
}
int main()
{
int a=2;
int *i=&a;
printf("Valeur de a avant : %i\n", a);
//Passage par valeur
Affecter1(a);
printf("Valeur de a apres le passage par Affecter1() : %i\n", a);
//Passage par variable
Affecter2(i);
printf("Valeur de a apres le passafe par Affecter2() : %i\n", a);
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 4 juin 2005 à 20:33
En Java on utilise des pointeurs sans s'en rendre compte. Pour autant
je préfère largement la possibilité qu'offre C++ de les utiliser
vraiment. C'est vraiment plus puissant, mais bien sur c'est aussi
dangereux si on ne sait pas trop ce qu'on fait.
Des qu'on travaille avec des chaînes, c'est très intéressant, rien a voir avec les String de Java.
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 4 juin 2005 à 20:33
ouais mais je trouve ca un peu lourd de devoir faire un pointeur sur une valeur en reference en plus ca nuit beaucoup a la lisiblite du code (enfin pour moi)
car comment vous traduiriez : int*i =&a; ? i pointe la reference de la valeur de a ?
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 4 juin 2005 à 20:45
je n'avai pas vu ta rep vecchio56 je doit avouer que les flux son mieu maitrise en c++ qu'en java mais a quel prix !!!!! les code son illisible
et il n'y a que peut d'exemple concret de la puissance des pointeur du moins j'en voit peu et je doit avouer qu'en java on ne s'en rend pas compte et ca ne me rend pas malheureu c un peu comme les commendre preprocesseur : #ifndef,#define,#endif etc... c comme les pointeur : je ne voi pas trop a quoi ca sert
mais merci de m'avoir repondu
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 4 juin 2005 à 20:47
Bé le & il dit que c'est l'adresse de a
parce que si tu fais, int *pi = a
il va avoir un problème d'allocation j'pense, à moins qu'en castant ca pourrait ptete marché...