Salut !
Commençons par les définitions (je pense que tu les connais, mais c'est
toujours utile de le rappeler) : un pointeur vers un objet est une
variable qui contient l'adresse de cet objet. Dans ton cas, l'objet est
un tableau. A la création du tableau, par exemple
int tab[10][4];
l'identifiant
tab est un pointeur vers ton tableau 4x10. Ainsi, lorsque tu appelles ta première fonction, tu peux lui passer directement
tab ou bien, comme tu le fais déjà
&tab[0][0] (ça reviens au même :).
Dans le cas qui t'intéresses, tu souhaites passer à la deuxième fonction un pointeur vers la donnée à l'adresse
&tab[x][y]
Il faut pour cela de passer en argument à fct2 ce pointeur. La
fonction fct1 doit donc retourner ce pointeur. Quelques modifications
de la fonction 1 sont nécessaires :
int* fct1(int* p)
{
int x, y; // coordonnées de l'élément cherché
//Ici, tu fais les opérations nécessaires pour récupérer
//x et y, les coordonnées de l'élément tab[x][y]
return &tab[x*taille_dim_2 + y]; //ta fonction renvoie
//un pointeur vers l'élément cherché
//très important : la fonction ne connais pas la taille de la de la
deuxième dimension. Il faut donc soit la définir globalement, soit la
définir globalement, soit la passer en argument
//Ou bien, comme le signalait luthor, tu utilises à la place de 'int* p', 'int p[][taille_dim_2]', et tu retourne &tab[x][y]
}
Tu n'as plus qu'à récupérer ce pointeur et à le passer à ta deuxième fonction
int main
{
int* ret_fct1;
int tab[X][Y];
ret_fct1 = fct1(tab);
fct2(ret_fct1);
}
Voilà... Essaie quand même de chercher des docs (google : "pointeur
langage c") sur le fonctionnement des pointeurs, leurs avantages et
leurs inconvénients : c'est un outil très utile et même indispensable
(je me demande comment je faisais sans avant... :). Je pense que si tu
comprends exactement ce qu'est un pointeur, ton problème se résoudra de
lui-même.
bye !
-- Virtual Dust --