Strona 1 z 1

Jęyk c

: 4 wrz 2008, o 12:53
autor: robertm19
Czy dobrze zdeklarowałem tablicę?
int **tablica;
int i;

tablica=(int**)malloc(5*sizeof(int *));
for(i=0; i

Jęyk c

: 4 wrz 2008, o 14:15
autor: soku11
Tak. W ten sposob stworzyle tablice 5x5. Oczywiscie trzeba pamietac, zeby ja rowniez poprawnie skasowac Pozdrawiam.

Jęyk c

: 6 wrz 2008, o 00:37
autor: eloar
To bardzo zly sposob deklarowania dynamicznej tablicy. Zostala naruszona zasada tworzenia tablic. Podstawowa cecha tablic, jest ciaglosc obszaru. Ta metoda tego nie gwarantuje. Ponadto konieczne bedzie usuwanie jej po kawalku, tymczasem jesli zadeklarujesz spojny obszar i przydzielisz go odpowiednio do wierszy, to nie bedzie problemow z usuwaniem zadnych. skasujesz korzystajac ze wskaznika na poczatek calego obszaru.

Jęyk c

: 6 wrz 2008, o 01:22
autor: soku11
Niby tak, jednak w C troche trudno by bylo to zaimplementowac (odwolanie do jej elementow byloby nie takie oczywiste). W C++ natomiast mozna sie pokusic o takie rozwiazanie tworzac klase i przeciezyc operatory, co by bylo bardziej zrozumiale Pozdrawiam.

Jęyk c

: 6 wrz 2008, o 01:33
autor: gawi
Tak można zdefiniować tablice która zachowuje ciągłość w pamięci:

Kod: Zaznacz cały

#include<stdlib.h>
#define ROZMIAR 5

int main(void)
{
   int **tab=malloc(ROZMIAR*sizeof(*tab));
   int i;

   *tab=malloc(ROZMIAR*ROZMIAR*sizeof(**tab));
   for(i=1;i<ROZMIAR;++i)
        tab[i]=tab[0]+i*ROZMIAR;
   return 0;
}