Przekazywanie rekursywne tablicy C

0

Witam, mam problem z przekazaniem rekursywnym tablicy, coś obiło mi się o uszy ze to robi się przez wskaźniki lecz jeszcze nie opanowałem co to jest, mógł mi ktoś podać jakiś przykład albo link do dobrego tutka z przykładami abym przeanalizował ? Albo tak wytłumaczyć jak Abel krowie jak to działa. bądź poprawił to w moim kodzie

#include<stdio.h>
#include <stdlib.h>

int main(){
... 
int szachy[rozmiar][rozmiar];
...
int szukaj(int x, int y) { 
  
  if(szachy[x][y]==1){ 
    if(y+1<rozmiar)szukaj(x,y+1);
    if(x+1<rozmiar)szukaj(x+1,y);   
  }
  
  szachy[x][y]=5;
  ile++;
  int ukosl=x+y; 
  int ukosp=y-x;
  for(i=0;i<rozmiar;i++)
    for(j=0;j<rozmiar;j++) if(i==x||j==y||(i+j)==ukosl||(j-i)==ukosp)szachy[i][j]=1;
  
   return szukaj(x,y);
  
} 

szukaj(0,0);
return 0;
}
 
0

Co do wskaźnika, to choćby http://pl.wikibooks.org/wiki/C/Wska%C5%BAniki . Potem ustawiasz go na pierwszy (zerowy) element tablicy i wysyłasz do funkcji. W samej funkcji możesz przechodzić do następnych elementów przez [nazwa wskaźnika]++, pamiętaj tylko żeby nie wyjść "poza tablicę".

0
int szachy[rozmiar][rozmiar];

int szukaj(int x, int y)
  {
   ... 
   return szukaj(x,y); // tu tak czy owak jakiś błąd - masz rekurencję nieskończoną
  } 
 
int main()
  {
   szukaj(0,0);
   return 0;
  }
int szukaj(int *szachy,int x, int y)
  {
   ...
   szachy[x+y*rozmiar]=5;  //szachy[x][y]=5;
   ... 
   return szukaj(szachy,x,y); // tu tak czy owak jakiś błąd - masz rekurencję nieskończoną
  } 
 
int main()
  {
   int szachy[rozmiar][rozmiar];
   szukaj((int*)szachy,0,0); // lub szukaj(szachy[0],0,0); // lub szukaj(&szachy[0][0],0,0); // poprawione zgodnie z uwagą od @MarekR22
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1