Muistin varaaminen

Hei. Tarviiko FreePascalissa varata taulukoille muisti erikseen vai varaako FP sen automaattisesti?
Entä miten osoittimien muistinvaraus tapahtuu. Eli mikä määrittää mihin kohtaan muistia osoitin osoittaa, ja onko sille rajoja.

Kiitos
3270
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Tässä on yksinkertainen esimerkki taulukon käytöstä Pascal:ssa:



program yksinkertainentaulukkoproject1;

{$mode objfpc}{$H }


const // vakioiden määrittely
MIN_TAU = 0 ;
MAX_TAU = 5 ;

type // tyyppien esittely
tau = array[ MIN_TAU..MAX_TAU ] of integer;

procedure TaytaTaulukko( var atau:tau );
var
i,j:integer;
begin
j := 4 ;
for i := MIN_TAU to MAX_TAU do
begin
atau[i]:= j;
j := j 5;
end;
end;

procedure TulostaTaulukko( atu:tau );
var
i:integer;
begin
for i := MIN_TAU to MAX_TAU-1 do
begin
write( atu[i] );
Write( ' : ' );
end;
writeln( atu[MAX_TAU] );
end;

var
taulukko :tau;

begin
writeln( 'Taulukkoesimerkki' );
writeln;
TaytaTaulukko( taulukko );
TulostaTaulukko( taulukko );
writeln;
end.

Äänestä
  • Tota voisi parantaa käyttämällä
    noissa aliohjelman esittelyissä var tilalla out viitettä eli se olisi

    procedure TaytaTaulukko( out atau:tau );

    koska kyseisestä aliohjelmasta tuodaan vain tietoa. (var:a käytetään silloin kun sinne viedään ja tuodaan)

    Tuossa toisessa jossa ei ole määrittelyä (kun ei ole mitään niin kopioidaan parametrit
    joita voidaan muuttaa. Mutta tuossahan ei muuteta niitä niin silloin parempi olisi const.
    Const kertoo että aliohjelmassa ei muuteta tuon muuttujan arvoa)
    eli näin

    procedure TulostaTaulukko( const atu:tau );

    Äänestä

Kommentoi aloitusta


FREEPASCAL kirjoitti:

Hei. Tarviiko FreePascalissa varata taulukoille muisti erikseen vai varaako FP sen automaattisesti?
Entä miten osoittimien muistinvaraus tapahtuu. Eli mikä määrittää mihin kohtaan muistia osoitin osoittaa, ja onko sille rajoja.

Kiitos

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu