🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15359

Re: Tableau: diff�rence entre pile et tas

#15359
From: Yves ROMAN
Date: Fri, 30 Sep 2005 13:07
67 lines
3984 bytes
<dab@acri-st.fr> a �crit dans le message de news: 
1128082651.908510.81550@o13g2000cwo.googlegroups.com...
> J'ai essay� en traitant mes 2 tables comme 2 vecteurs de pointeurs.

donc : t_sorted_grid_point** distTable ;

> J'ai chang� le prototype de ma fonction: computeNeighbors comme ceci:
> void computeNeighbors(t_grid_point* gridPointTable[], int
> gridPointTableSize,
>                         t_sorted_grid_point* distTable[]);

Ok : c'est coherent avec la d�claration

> J'acc�de � chaque �lement ainsi distTable[x*NB_NEIGHBOR+y].

Non : ici tu le traites comme une matrice plate : distTable[z] est un 
pointeur vers t_sorted_grid_point. Je me demande comment �a peut compiler !
Il faut y acc�der par distTable[x][y] :
    distTable[x] est un pointeur vers t_sorted_grid_point (ou vers un 
vecteur)
    distTable[x][y] est le y�me de ce vecteur et donc bien un 
t_sorted_grid_point

> J'ai modifi� le code en fonction et je fais des malloc pour cr�er
> chaque  t_sorted_grid_point au moment ou je l'ins�re et �a marche.

Ok pour l'allocation

> Mais je ne sais toujours pas d'ou proviens l'erreur.
>
> Quand on utilise cette notation distTable[x][y], le compilo
> consid�re-t-il automatiquement que la m�moire est contigu quelle que
> soit la mani�re dont a �t� initialis� distTable?

Tout d�pend de la fa�on de d�clarer ta variable.

Si tu la d�clares en Type Table[LIGNES][COLONNES] , il va effectivement 
supposer la m�moire contigue et chercher l'�lement � la position 
x*COLONNES+y
Dans ce cas la zone utilis�e contient les LIGNESxCOLONNES �l�ments.

Si tu la d�clares en Type **Table (et si tu l'alloues correctement), il va 
partir de l'adresse contenue dans Tables et chercher la valeur contenue dans 
la position x (qui est un pointeur) puis, � partir de cette nouvelle adresse 
chercher l'�lement contenu dans la position y.
Table[x][y] est alors une traduction de *(*(Table+x))+y)
Dans ce cas, il y a une zone allou�e pour LIGNES pointeurs, et chacun pointe 
vers une zone allou�e contenant COLONNES �l�ments.

M�me si on utlise la m�me notation Table[x][y] pour y acc�der dans les 2 
cas, les m�canismes utilis�s sont diff�rents.
C'est l'�ternel probl�me de similitude de syntaxe entre tableaux et 
pointeurs en C, alors que ce sont 2 choses totalement diff�rentes.

>
> Si on alloue distTable ainsi, comment est-ce qu'on peut allouer aux
> �l�ments du tableau en utilisant quelque chose comme (*distTable[x
> ])[y ]  ?
>
> distTable = malloc(NB_MAX_GRID_POINT*sizeof(void *));
> for(inc=0; inc<NB_MAX_GRID_POINT; inc++) {
>         distTable[inc] =
> malloc(NB_NEIGHBOR*sizeof(t_sorted_grid_point));
> }

tu y acc�des simplement par distTable[x][y]
Technical Details
Message-ID: <dhjd83$vbm$1@s1.news.oleane.net>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!134.158.69.22.MISMATCH!in2p3.fr!oleane.net!oleane!not-for-mail
References: <1127923112.347881.79740@z14g2000cwz.googlegroups.com> <1128006219.590857.313500@g47g2000cwa.googlegroups.com> <dhh0u1$nn7$1@s1.news.oleane.net> <1128082651.908510.81550@o13g2000cwo.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,9ee84542aed426f5
X-Google-Attributes: gidf9822,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!134.158.69.22.MISMATCH!in2p3.fr!oleane.net!oleane!not-for-mail
From: "Yves ROMAN" <yves.roman@NO.unilog.SPAM.fr>
Newsgroups: fr.comp.lang.c
Subject: Re: Tableau: diff�rence entre pile et tas
Date: Fri, 30 Sep 2005 15:07:32 +0200
Organization: Guest of France Telecom's news reading service
Lines: 69
Message-ID: <dhjd83$vbm$1@s1.news.oleane.net>
References: <1127923112.347881.79740@z14g2000cwz.googlegroups.com>   <1128006219.590857.313500@g47g2000cwa.googlegroups.com>   <dhh0u1$nn7$1@s1.news.oleane.net> <1128082651.908510.81550@o13g2000cwo.googlegroups.com>
NNTP-Posting-Host: cerbere.unilog.fr
X-Trace: s1.news.oleane.net 1128085571 32118 194.3.185.2 (30 Sep 2005 13:06:11 GMT)
X-Complaints-To: abuse@oleane.net
NNTP-Posting-Date: Fri, 30 Sep 2005 13:06:11 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
X-RFC2646: Format=Flowed; Original