Czy dobrze zdeklarowałem tablicę?
int **tablica;
int i;
tablica=(int**)malloc(5*sizeof(int *));
for(i=0; i
Jęyk c
- eloar
- Użytkownik
- Posty: 106
- Rejestracja: 18 cze 2007, o 16:59
- Płeć: Mężczyzna
- Lokalizacja: Kobyłka
- Podziękował: 8 razy
- Pomógł: 12 razy
Jęyk c
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.
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
Jęyk c
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.
-
- Użytkownik
- Posty: 96
- Rejestracja: 10 mar 2007, o 14:12
- Płeć: Mężczyzna
- Lokalizacja: O-ka
- Podziękował: 29 razy
- Pomógł: 1 raz
Jęyk c
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;
}