Przekazanie tablicy do funkcji
DarkGL
04.09.2009
Jako że nie ma jeszcze odpowiednich kategorii (kurek pospiesz się ) pisze tutaj a mianowiccie głowie się jak przekazać tablice dwuwymiarową do funkcji
kolega poradził mi żębym poczytał o wskażnikach dobra przeczytałem i chciałem zrobić coś takiego:
i chciałem przekazać ten wskażnikdo funkcji ale nadal nie mogłem : jeśli możecie to napiszcie mi jakim sposobem to zrobić możecie też dadź kod jakoś łatwiej mi to zrozumieć gdy patrze na kod
@edit
przemyślałem to sobie i wydumałem coś takiego
kolega poradził mi żębym poczytał o wskażnikach dobra przeczytałem i chciałem zrobić coś takiego:
int* wsk= tab;(tab to moja tablica )
i chciałem przekazać ten wskażnikdo funkcji ale nadal nie mogłem : jeśli możecie to napiszcie mi jakim sposobem to zrobić możecie też dadź kod jakoś łatwiej mi to zrozumieć gdy patrze na kod
@edit
przemyślałem to sobie i wydumałem coś takiego
const int rozmiar_tablicy=5000; int tab[rozmiar][rozmiar]; asd(v,rozmiar);funkcja asd
int asd(int tab2[][],int rozmiar_funkcja_asd) { }co o tym myślicie
choyrack
04.09.2009
void pokaz(int **tab2D,int ilewierszy,int ilekolumn) { for (int i=0;i<ilewierszy;i++) { for (int j=0;j<ilekolumn;j++) cout<<tab2D[i][j]<<" "; cout<<endl;; } } int main(int argc, char* argv[]) { int **tab; int k,w ; cin>>w; cin>>k; tab=new int * [w]; for (int i=0;i<w;i++) tab[i]=new int[k]; for (int i=0;i<w;i++) for (int j=0;j<k;j++) tab[i][j]=random(100); pokaz(tab,w,k); for (int i=0;i<w;i++) delete [] tab[i]; delete [] tab; system("pause"); return 0; }
Jeśli masz tablice o stałym rozmiarze to po cholerę komplikować i przekazywać je przez argument do funkcji? Wtedy lepiej zrób taką tablice jako globalną i się bezpośrednio do niej odwołuj.
DarkGL
05.09.2009
wielkość tablicy zależy od tego co poda użytkownik więc globalnej nie mogę
[ Dodano: 05-09-2009, 01:33 ]
heh co robią linijki
[ Dodano: 05-09-2009, 01:33 ]
heh co robią linijki
tab=new int * [w];i
tab[i]=new int[k];bo gyd je zmieniłem na
tab[i]=0;to następuje zgon programu w tym miejscu
choyrack
06.09.2009
Wskaźnik - tworzy tablice na szerokość (ilość wierszy)Kod:
tab=new int * [w];
A tak dokładnie to rezerwuje w pamięci obszar który będzie używany do zapisywania danych w wierszach. Trzeba to jednak rozszerzyć o kolumny (chyba, że chcesz mieć tablicę jednowymiarową)
Tworzy tablice na wysokość (ilość kolumn)Kod:
tab=new int[k];
Rezerwuje w pamięci obszar na komórki tablicy. O wielkość int. Jak chcesz mieć double to nie ma problemu.
[ [i]Dodano: 06-09-2009, 01:17 ]
Pamiętaj, że tab[i] to NIE JEST element tablicy tylko wskaźnik. Jak byś tak zrobił jak piszesz to byś miał tablice wskaźników, które na nic nie wskazują.Kod:
tab[i]=0;