[quote=« Drealmer, post:16, topic: 29479 »]Euh non
Si t’as un tableau de type X, ajouter 1 ajoute sizeof(X) à l’addresse de base. Donc pas besoin de « tab+(210sizeof(char)) », « tab + 2 » suffit. Voici plutôt à quoi ça ressemble, ici p0==p1 et p2==p3.
[code]char * p0 = *(tab + 2);
char * p1 = tab[2];
char * p2 = *(tab + 2) + 4;
char * p3 = &(tab[2][4]);[/code]
LoneWolf va finir par croire que je lui en veux
edit: légère simplification du code par suppresion des cast inutiles :P[/quote]
Je crois plutot que je confonds tout en fait.
Tu dis la que si on fait un tableau de taille constante, le compilo sait quel est le nombre d’octets pour chaque case. C’etait pas le cas quand on m’a appris les pointeurs.
J’ai fait un programme qui teste ca:
[code]#include<stdio.h>
#include <stdlib.h>
int main(void)
{
int pi,tabi[10],i;
for(i=0;i<10;i++) tabi[i]=i;
pi=malloc(10sizeof(int));
for(i=0;i<10;i++) pi[i]=i;
for(i=0;i<10;i++)
{
printf("pos(tab):%X:%d\n",tabi+i,(int)*(tabi+i));
printf("pos(p):%X:%d\n",pi+i,(int)*(pi+i));
}
return 0;
}[/code]
En fait, meme si j’utilise pi ou tabi, j’ai le meme resultat, qui est correct en plus. Je pense que ca ne fonctionne plus si on utilise void, mais c’est tricher dans ce cas la.
Comme quoi, je suis UBER rouille B)
LoneWolf
Ca y est, j’suis deja has been