Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Crni Forumaš(ica)


Pridružen/a: 15. 12. 2003. (01:20:43) Postovi: (23C)16
Spol: 
Lokacija: Zagreb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 23:21 pon, 10. 5. 2004 Naslov: |
|
|
[code:1]int **t, i;
t = (int **) malloc(m * sizeof(int *));
for (i = 0; i < m; i++)
t[i] = (int *) malloc(n * sizeof(int));[/code:1]
Nisam skroz siguran, jer je pisano napamet, a nemam compiler pri ruci za provjeriti (da, slucajno sam bootao Windoze :oops:). Ali, ideja je tu negdje... 8)
Naime, int **t kaze "[i]t je pointer na ponter na int[/i]", sto je u Cu isto kao i "[i]t je niz pointera na int[/i]". :D Onda prvo treba alocirati niz pointera na int*, a zatim i puno takvih pointera. :-s
Kod: | int **t, i;
t = (int **) malloc(m * sizeof(int *));
for (i = 0; i < m; i++)
t[i] = (int *) malloc(n * sizeof(int)); |
Nisam skroz siguran, jer je pisano napamet, a nemam compiler pri ruci za provjeriti (da, slucajno sam bootao Windoze ). Ali, ideja je tu negdje...
Naime, int **t kaze "t je pointer na ponter na int", sto je u Cu isto kao i "t je niz pointera na int". Onda prvo treba alocirati niz pointera na int*, a zatim i puno takvih pointera.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
Crni Forumaš(ica)


Pridružen/a: 15. 12. 2003. (01:20:43) Postovi: (23C)16
Spol: 
Lokacija: Zagreb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Crni Forumaš(ica)


Pridružen/a: 15. 12. 2003. (01:20:43) Postovi: (23C)16
Spol: 
Lokacija: Zagreb
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 17:30 uto, 11. 5. 2004 Naslov: |
|
|
Ovako radi, ako si na to mislio:
[code:1]
typedef int* int_p;
int i;
int_p* t;
t = (int_p*) malloc(m * sizeof(int_p);
for(i = 0; i < n; ++i) t[i] = (int_p) malloc(n * sizeof(int));
[/code:1]
Dakle, t je pointer na pointer na int, alocira se memorija za polje od m pointera na int. Nakon ovoga je t[i] pointer na int (i=0,..,m-1), za svaki 'legalan' i alocira se memorija za polje od n int-ova. Sada je t[i][j] j-ti int u i-tome polju int-ova sto se moze interpretirati kao element u i-tom retku i j-tom stupcu.
Ovako radi, ako si na to mislio:
Kod: |
typedef int* int_p;
int i;
int_p* t;
t = (int_p*) malloc(m * sizeof(int_p);
for(i = 0; i < n; ++i) t[i] = (int_p) malloc(n * sizeof(int));
|
Dakle, t je pointer na pointer na int, alocira se memorija za polje od m pointera na int. Nakon ovoga je t[i] pointer na int (i=0,..,m-1), za svaki 'legalan' i alocira se memorija za polje od n int-ova. Sada je t[i][j] j-ti int u i-tome polju int-ova sto se moze interpretirati kao element u i-tom retku i j-tom stupcu.
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
Zadnja promjena: mdoko; 17:43 uto, 11. 5. 2004; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
|