POinteur or not pointeur....
chaps31
Membre
Dites-moi si j'ai juste (et si je flood avec tous mes messages...) :
J'ai découvert un truc bizzare, lorsque j'utilise des NSString je ne me pose pas de question, je déclare des pointeur NSString (NSString *) dans mes arguments de méthodes ou NSString *machaine dans le code, puis utilise la variable via son nom tout bêtement et j'obtiens la valeur.
Par contre avec les nombres tout change, je déclare un pointeur vers un integer (int *) dans mes arguments de méthode mais un int *unentier dans le code ne fonctionne pas il faut que je déclare int unentier, et donc si je veux récupérer l'adresse du pointeur il ne faut pas que j'oubli le & .
C'est bizarre je ne peux pas déclarer dans mon code un nombre en déclarant un pointeur ? genre int *unentier, car il me dit alors "warning:initialization makes pointer from integer without a cast", je ne peux déclarer que sa valeur puis éventuellement travailler avec le pointeur par la suite avec &... Tout ça vient peut être du fait que NSString est une classe et pas int ou float...
CA vous inspire ma réflexion ?
J'ai découvert un truc bizzare, lorsque j'utilise des NSString je ne me pose pas de question, je déclare des pointeur NSString (NSString *) dans mes arguments de méthodes ou NSString *machaine dans le code, puis utilise la variable via son nom tout bêtement et j'obtiens la valeur.
Par contre avec les nombres tout change, je déclare un pointeur vers un integer (int *) dans mes arguments de méthode mais un int *unentier dans le code ne fonctionne pas il faut que je déclare int unentier, et donc si je veux récupérer l'adresse du pointeur il ne faut pas que j'oubli le & .
C'est bizarre je ne peux pas déclarer dans mon code un nombre en déclarant un pointeur ? genre int *unentier, car il me dit alors "warning:initialization makes pointer from integer without a cast", je ne peux déclarer que sa valeur puis éventuellement travailler avec le pointeur par la suite avec &... Tout ça vient peut être du fait que NSString est une classe et pas int ou float...
CA vous inspire ma réflexion ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ouais, tout bon
L'étoile confirme que c'est un pointeur.
Donc pour faire pareil avec un entier, pas de pb : int * mais il faut alors faire l'équivalent d'un alloc que tu fais par un moyen ou un autre sur ton NSString.
Ce que t'as expliqué Schlum (en C, alloc = malloc).
A+
Une déclaration int N; prépare en mémoire une zone de 4 octets dans laquelle on peut stocker une valeur par N=12;
Une déclaration int * address; prépare en mémoire une zone de 4 octets susceptible de recevoir l'adresse d'un entier.
par exemple
int N;
N=12;
int * address;
address=&N;
fait que le contenu de la variable address est l'adresse en mémoire de N
et le contenu de N peut être obtenu par *address ou address[0]
printf("%d\n",*address)
écrit la valeur 12.
Une instance donne effectivement une référence = un pointeur = une adresse sur une zone mémoire contenant les infos de cette instance.
le (int*) devant malloc n'est là que pour mémoire dans certains styles de programmation.
En effet malloc renvoie un (void*). le cast est alors automatique.
Tu t'avances beaucoup en disant " 4 "Â :P
2 en LP32
4 en ILP32, LLP64, LP64
8 en ILP64
Pareil...
4 en LP32, ILP32
8 en ILP64, LLP64, LP64
Yes.