Article View: pl.comp.lang.pascal
Article #80358Re: dynamiczna tablica (jeszcze raz)
From: Tomasz Minkiewicz
Date: Wed, 22 Oct 2003 15:45
Date: Wed, 22 Oct 2003 15:45
58 lines
2508 bytes
2508 bytes
On 20-10-2003 20:29, Solaris wrote: > Probowalem cos takiego (fpc): > > type Tcos = array [0..MaxLongint] of byte; > Pcos = ^Tcos; > > var el : cardinal; > cos : Pcos; > > begin > el := 100; > getmem(level,el * Sizeof(cardinal)); > cos^[150]:=1; // * > writeln(cos^[150]); // i to pokazuje mi wartosc 1 a powinno np.0, > //zadeklarowalem tylko 100 elementow. Zarezerwowałeś _miejsce_na_ 400 elementów. > freemem(level,el * Sizeof(cardinal)); > end. > > Co jest zle ? Przykro mi, że muszę Cię zmartwić - nic nie jest źle i napisałeś poprawny program. :-) Ale tak jak robisz jest IMHO nieelegancko i niewygodnie, bo tworzysz wskaźnik na tablicę o określonym rozmiarze (czyli niezgodny ze wskaźnikiem na tablicę elementów tego samego typu, ale o innym rozmiarze). A to, co chcesz osiągnąć chyba lepiej zrobić tak (no chyba, że ja nie rozumiem, co chcesz osiągnąć): var cos: ^byte; el: cardinal; begin el := 100; getmem(cos, el * Sizeof(cos^)); cos[50] := 1; // równoważne, ale znacznie czytelniejsze od: (cos + 50 * SizeOf(cos^))^ := 1; // równoważne, ale tylko w tym szczególnym przypadku!!!!! (cos + 50)^ := 1; writeln(cos[50]); freemem(cos, el * Sizeof(cos^)); end. Tylko nie zapomnij, że cos[n] zawsze wskazuje na n-ty element typu wskazywanego przez cos, natomiast (cos + n) już niekoniecznie, czyli inaczej niż w C. -- Tomasz Minkiewicz tommink@space.pl
Technical Details
Message-ID:
<1nz78douhhyc3$.dlg@TomMink.40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news2.icm.edu.pl!news.man.lodz.pl!not-for-mailReferences:
<bn19lb$1l7$1@nemesis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news2.icm.edu.pl!news.man.lodz.pl!not-for-mail From: Tomasz Minkiewicz <tommink@space.pl> Newsgroups: pl.comp.lang.pascal Subject: Re: dynamiczna tablica (jeszcze raz) Date: Wed, 22 Oct 2003 17:45:36 +0200 Organization: KGF UŁ Lines: 58 Message-ID: <1nz78douhhyc3$.dlg@TomMink.40tude.net> References: <bn19lb$1l7$1@nemesis.news.tpi.pl> Reply-To: tommink@space.pl NNTP-Posting-Host: 212.191.73.67 Mime-Version: 1.0 X-Trace: kujawiak.man.lodz.pl 1066837375 13529 212.191.73.67 (22 Oct 2003 15:42:55 GMT) X-Complaints-To: abuse@man.lodz.pl NNTP-Posting-Date: Wed, 22 Oct 2003 15:42:55 +0000 (UTC) X-Face: $Q>U*H]s$ZYc}`~v"FCUNyRAe=jyIN'.~h\rty?&)RVi@:#ZLDxF!mLFQ~OI.]e[%!#X-Sc 8Zv52y%v&&}[rq<KwJ%`7@|rG7;[kx_qX|!E5i>Y`5!m8)?l47<;j`;W'bIlXF)~;20sqHAG[-p!]9 Z User-Agent: 40tude_Dialog/2.0.5.1 Hamster/2.0.0.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit