dynaamiset

dynaaminen muistin varaaminen kaksiulotteiselle taulukolle.
mikä on helpoin tapa varata muistia kaksiulotteiselle double taulukolle,
siten että taulukon alkiohin edelleen voitaisiin viitata samalla tavalla hakasulkujen avulla kuin staattisten taulukoiden kanssa. siis A[a][b]=3.3;
6579
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

niin dynaamisesti, että vaan viittaamalla johonkin taulukon alkioon sille varataan muistia.

Koodia kääntäessä ei tarvitse taulukon koon olla tiedossa, mutta ajon aikana pitää se koko tietää. Sen jälkeen varataan tilaa mallocilla ja sitten voi viitata alkioihin.

Äänestä

muistin varaaminenhan sinänsä on helppoa, malloc calloc,new jne. ongelmana vain on tuo tuossakin mainittu kahdella hakasulkuparilla viittaaminen. näyttää sille että kääntäjä aina vaatiii [][]taulukolle kiinteän koon. jos sitten muisti varataan double *A :lle, tai A[] :lle, se onnistuu, mutta A[a][b] viittaus ei onnistu, yksi riviseen A[a] viittaaminen kuitenkin onnistuu. Ratkaisua en tiedä, mutta muakin kiinnostaa. Ehkä jollakin makrolla? Olen kuullut että extern double viittauksella onnistuisi, mutta siinä ollaan ehkä heikoilla jäillä.

Äänestä

#include
#include
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int main(int argc, char* argv[])
{
double **taulukko;
long rivit,sarakkeet;
long rind,sind;

rivit=3;
sarakkeet=2;
taulukko=new double*[rivit];
//Varataan tila kunkin rivin sarakkeille
for(rind=0;rind < rivit;rind )
{
taulukko[rind]=new double[sarakkeet];
}
//Kaikki taulukon alkiot alustetaan rivinumerolla
for(rind=0;rind < rivit;rind )
for(sind=0 ; sind < sarakkeet ; sind )
{
taulukko[rind][sind]=rind;
}
//Käytetään taulukkoa
//*******************
taulukko[0][1]=100;
cout

Äänestä

tuhannnet kiitokset vinkeistä,
miljoonat kiitokset dyntau.cpp kirjoittajalle.
new,tai kääntäjä, ymmärtää siis ** viittauksen edessä, mutta ei [][]viittausta jäljessä.

muuten, onko staattisten liukulukutaulukoiden nollaksi alustaminen memset(mpP,0,sizeof(mpP)); turvallista ja kelpoa myös tulevaisuudessaja onko se käyttöjärjestelmästä riippuvaista.

Äänestä
  • Se ** taulukkonimen edessä on ns kaksoisosoitin.
    Netistä löytyy tietoa,millä tavoin sitä käytetään.
    Ei kaikkea tosin tarvitse niin kovin tarkkaan tie-
    tääkään jos osaa käyttää noita "palikoita".

    Mainitsin vain siksi,että tälläista taulukkoa olis
    i hyvä osata käyttää funktioista käsin ja kumpaankin suuntaan.

    Äänestä

Kommentoi aloitusta


taulukot kirjoitti:

dynaaminen muistin varaaminen kaksiulotteiselle taulukolle.
mikä on helpoin tapa varata muistia kaksiulotteiselle double taulukolle,
siten että taulukon alkiohin edelleen voitaisiin viitata samalla tavalla hakasulkujen avulla kuin staattisten taulukoiden kanssa. siis A[a][b]=3.3;

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