Jak przekazać do funkcji, a następnie w funkcji przekazać wskaźnik do dwuwymiarowej tablicy?

Odpowiedz Nowy wątek
2013-12-15 02:06

Rejestracja: 8 lat temu

Ostatnio: 3 lata temu

0

Witam, moim problemem jest przeniesienie wskaźniku z funkcji do następnej funkcji, która jest wywoływana. Np Main > A > B > A > Main.
Mniej więcej chce, żeby do punktu B, przechodziła moja tablica.
Przekazanie tablicy do funkcji z main jest jeszcze łatwe. Robię to tak:

printf("%i", rekurencja(tab)); 

Ale, już przekazanie tego dalej skutkuje błędem.

probaszczescia.c:28:5: note: expected ‘short int (*)[3]’ but argument is of type ‘short int’
 int sprawdzczyremis(short int tab[MAXSTAN][MAXSTAN])

Tak próbuje przerzucić tablicę dalej w funkcji:

int remis=sprawdzczyremis(tab[MAXSTAN][MAXSTAN]); 

MAXSTAN jest moją define w której przechowuje stałą liczbową 3.
Ale próba odebrania tego argumentu w funkcji, jest taka:

int sprawdzczyremis(short int tab[MAXSTAN][MAXSTAN]) 

A to skutkuje wyżej wymieniony błąd.
Gdzie robię błąd?

Pozostało 580 znaków

2013-12-15 02:20

Rejestracja: 7 lat temu

Ostatnio: 11 minut temu

Lokalizacja: Kraków

0

Tablice przekazuje sie do funkcji poprzez wskaźnik. Jak wiemy nazwa tablicy jest rownoznaczna ze wskaźnikiem do niej.


Tak działa wtedy kiedy z maina chce przekazać fo funkcji. Ale nie działa kiedy z maina chce przekazać do funkcji A, a następnie z funkcji A przekazać do funkcji B. - luke18dg 2013-12-15 02:48

Pozostało 580 znaków

2013-12-15 03:04

Rejestracja: 7 lat temu

Ostatnio: 11 minut temu

Lokalizacja: Kraków

0

Podpowiedz nr. 2:

int remis=sprawdzczyremis(tab[MAXSTAN][MAXSTAN]); 

Pozostało 580 znaków

2013-12-15 11:27

Rejestracja: 8 lat temu

Ostatnio: 3 lata temu

0

@zonkoo22 Albo ja Ciebie zrozumiałem źle, albo ty mnie. Nie wiem. Podpowiedź nr 2. Jest błędna ponieważ przekazuje tą tablicę DWUWYMIAROWĄ dalej, a co skutkuje, że muszę tak zrobić.

  • Deklaracje w main np tab[3][3]
  • przekazuje do funkcji jako argument, ale tab jest wskaźnikiem na pierwszy element więc robię to tak nazwafunkcji(tab)
  • w tej funkcji jako argument funkcji, odbieram ją tak short int tab[3][3]
  • następnie i co się okazało muszę przesłać ją dalej jako wskaźnik na pierwszy element tak samo w mainie. I tutaj tkwił mój problem. np tab
  • i odbieram tak samo jak przyjmowałem w funkcji.
    Dziękuje za pomoc i chęci.
Zdecydowanie Ty mnie źle zrozumiałeś, a nie chciałem dawać Ci gotowca. - pingwindyktator 2013-12-15 16:03

Pozostało 580 znaków

2013-12-15 11:36

Rejestracja: 14 lat temu

Ostatnio: 1 dzień temu

Tu są trzy podstawowe sposoby na przekazanie dwuwymiarowej tablicy:

#include <iostream>
using namespace std;

const unsigned MAX=3;

void fun3(short Tb[][MAX])
  {
   for(unsigned y=0;y<MAX;++y,cout<<endl) for(unsigned x=0;x<MAX;++x) cout<<Tb[y][x]<<' ';
  }

void fun2(short (*Tb)[MAX][MAX])
  {
   fun3(*Tb);
  }

void fun1(short (&Tb)[MAX][MAX])
  {
   fun2(&Tb);
  }

int main()
  {
   short Tb[MAX][MAX]={{1,2,3},{4,5,6},{7,8,9}};
   fun1(Tb);
   return 0;
  }

http://ideone.com/gZpgLE


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz

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