ďťż

Ładny brzuch

Hej no wlasnie mam z tym problem, help me please, probowalem to robic tak ale nie idzie:

char* function()
{
int i, j;
int *wsk = new char[10][10];
for(i=0; i<10; i++)
for(j=0; j<10; j++)
{
wsk[i][j] = j;
}
return wsk;
}

Co jest nie tak?



int* function() { int i, j; int *wsk = (int*) new int[10][10]; for(i=0; i<10; i++) for(j=0; j<10; j++) { wsk[i*10+j] = j; } return wsk; }??

Ja tu tak paru rzeczy niespecjalnie rozumiem (czytaj to nie ma sensu).
1. chcesz zwróćić tablicę znaków, a tworzysz tablicę int
2. pod wskaźnik mogący pokazywać na typ int przypisujesz stworzoną tablicę typu char
Wniosek... zdecyduj się... na jedno albo drugie (znaczy się zwracanie tablicy int lub char)

Hej a mozesz mi wytlumaczyc co to jest (int*)
i jak potem w mainie taka funkcje wywolac?




Hej a mozesz mi wytlumaczyc co to jest (int*)
i jak potem w mainie taka funkcje wywolac?
1. Int* to jest wskaźnik do liczb całokowitych (w skrócie).
2. A co chcesz uzyskać?

sorry porypalo mi sie mialo byc:(oczywiscie chary)

char* function()
{
int i, j;
char *wsk = (char*) new char[10][10];
for(i=0; i<10; i++)
for(j=0; j<10; j++)
{
wsk[i*10+j] = j;
}
return wsk;
}

#include <cstdio> char** function() { int i, j; char** wsk =  new char*[10]; for(i = 0; i<10; ++i) wsk[i] = new char[10]; for(i=0; i<10; i++) for(j=0; j<10; j++) { wsk[i][j] = j; } return wsk; } int main() { char** wsk; wsk = function(); printf("%d",wsk[2][2]); for(int i = 0; i<10; ++i) delete[] wsk[i]; delete[] wsk; return 0; }
Użytkownik Artur Menc edytował ten post 07 marzec 2006, 21:25
Ciekawa linijka: char** wsk = new char*[10];
Mozesz mi wytlumaczyc o co w tym chodzi?

Dynamiczne stworzenie tablicy dziesięciu wskaźników na zmienne typu char i wpisanie adresu jej początku do wsk.
Użytkownik Chmurek edytował ten post 07 marzec 2006, 21:34

Ciekawa linijka: char** wsk =  new char*[10];
Mozesz mi wytlumaczyc o co w tym chodzi?

A tutaj co robimy?
for(i=0; i<10; ++i)
wsk[i] = new char[10];

Argh. ;)
Alokujemy pamięć dla dziesięciu tablic znaków i adres na początek każdej wpisujemy w kolejne pola uprzednio stworzonej tablicy. W efekcie powstaje tablica dwuwymiarowa.

nie powstaje zadna tablica dwuwymiarowa. Ej - serio - przestance mu odpowiadac, bo skoro nie wie nawet co oznacza zapis "int *" to powinien sie skierowac do podrecznikow a nie tutaj na forum

Co to (int*) to wiedziałem ale chodziło mi o całą linijkę. Co się czepiasz że ktoś ma ochotę odpowiedzieć, jak ty nie masz to po co się udzielasz?


Co to (int*) to wiedziałem ale chodziło mi o całą linijkę. Co się czepiasz że ktoś ma ochotę odpowiedzieć, jak ty nie masz to po co się udzielasz?


nie powstaje zadna tablica dwuwymiarowa
Oczywiście że powstaje lub, jeśli wolisz to ująć w innych słowach, zostaje dla niej zaalokowana pamięć.

hallo: Nie przejmuj się. ;)
Użytkownik Chmurek edytował ten post 07 marzec 2006, 22:00
tiaaa już to gdzieś słyszałem, bodajże na kryptografii :)


Oczywiście że powstaje lub, jeśli wolisz to ująć w innych słowach, zostaje dla niej zaalokowana pamięć.

hallo: Nie przejmuj się. ;)

Wiecie gdzie można znaleźć coś o tablicach wielowymiarowych i wskaźnikach do nich?

Chociażby w Wikipedii.
st3tc: Skoro tak piszesz... ;)
Ale na wszelki wypadek może też zastosuj się do swojej rady i sięgnij do jakiejś książki. ;)
Użytkownik Chmurek edytował ten post 07 marzec 2006, 22:05

Chociażby w Wikipedii.
st3tc: Skoro tak piszesz... ;)
Ale na wszelki wypadek może też zastosuj się do swojej rady i sięgnij do jakiejś książki. ;)

Dzięki za ciekawą, zakręconą ;) dyskusję. Pozdrawiam

st3tc chodziło o to, że mógłbyś tworzyć taką tablicę w ten sposób:
int *tablica = new int[kolumny*wiersze];
i później odwoływać się do niej tak:
tablica[2*kolumny+3] = 5; // dostęp do elementu o współrzędnych 3,2
Osobiście uważam to za gorszą (mniej intuicyjną i wolniejszą) metodę.
Poza tym w C++ ogólnie zalecane jest raczej używanie pojemników.
Użytkownik Chmurek edytował ten post 07 marzec 2006, 22:37

Dzięki za ciekawą, zakręconąÂ  ;)  dyskusję. Pozdrawiam

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •