Verskil tussen wyser en skikking

Verskil tussen wyser en skikking
Verskil tussen wyser en skikking

Video: Verskil tussen wyser en skikking

Video: Verskil tussen wyser en skikking
Video: Wat is het verschil tussen voedingsstoffen en grond verbeteren? 2024, November
Anonim

Pointer vs Array

'n Wyser is 'n datatipe wat 'n verwysing na 'n geheueligging bevat (m.a.w. 'n wyserveranderlike stoor 'n adres van 'n geheueligging waarin sommige data gestoor word). Skikkings is die mees gebruikte datastruktuur om 'n versameling elemente te stoor. Die meeste programmeertale verskaf metodes om skikkings maklik te verklaar en toegang tot elemente in die skikkings te kry.

Wat is 'n wyser?

'n Wyser is 'n datatipe wat 'n adres van 'n geheueligging stoor waarin sommige data gestoor word. Met ander woorde, 'n wyser hou 'n verwysing na 'n geheue plek. Toegang tot die data wat gestoor is in die geheue plek waarna verwys word deur die wyser, word dereferencing genoem. Wanneer herhalende bewerkings uitgevoer word, soos deur bome/stringe, tabelopsoeke, ens., sal die gebruik van wysers die werkverrigting verbeter. Dit is omdat die verwysing en kopiëring van wysers goedkoper is as om werklik die data te kopieer en toegang te verkry wat deur die wysers gewys word. 'n Nulwyser is 'n wyser wat na niks wys nie. In Java sal toegang tot 'n nulwyser 'n uitsondering genereer wat 'n NullPointerException genoem word.

Wat is 'n skikking?

Getoon in figuur 1, is 'n stukkie kode wat tipies gebruik word om waardes aan 'n skikking te verklaar en toe te ken. Figuur 2 beeld uit hoe 'n skikking in die geheue sal lyk.

int-waardes[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

Figuur 1: Kode om waardes aan 'n skikking te verklaar en toe te ken

100 101 102 103 104
Indeks: 0 1 2 3 4

Figuur 2: Skikking gestoor in die geheue

Bostaande kode definieer 'n skikking wat 5 heelgetalle kan stoor en hulle word verkry deur indekse 0 tot 4 te gebruik. Een belangrike eienskap van 'n skikking is dat die hele skikking as 'n enkele blok geheue toegewys word en elke element kry sy eie ruimte in die skikking. Sodra 'n skikking gedefinieer is, is die grootte daarvan vas. As jy dus nie seker is oor die grootte van die skikking tydens samestelling nie, sal jy 'n groot genoeg skikking moet definieer om in die veilige kant te wees. Maar die meeste van die kere gaan ons eintlik minder elemente gebruik as wat ons toegewys het. So 'n aansienlike hoeveelheid geheue word eintlik vermors. Aan die ander kant as die "groot genoeg skikking" nie eintlik groot genoeg is nie, sal die program ineenstort.

Wat is die verskil tussen Pointers en Arrays?

'n Wyser is 'n datatipe wat 'n adres van 'n geheueligging stoor waarin sommige data gestoor word, terwyl Skikkings die mees algemeen gebruikte datastruktuur is om 'n versameling elemente te stoor. In C-programmeertaal word skikkingsindeksering gedoen deur gebruik te maak van wyserrekenkunde (d.w.s. die iste element van die skikking x sal gelykstaande wees aan (x+i)). Daarom kan in C, stel wysers wat wys na 'n stel geheue-liggings wat opeenvolgend is, beskou word as 'n skikking. Verder is daar 'n verskil in hoe die grootte van die operateur op wysers en skikkings werk. Wanneer dit op 'n skikking toegepas word, sal sizeof-operateur die hele grootte van die skikking terugstuur, terwyl wanneer dit op 'n wyser toegepas word, dit net die grootte van die wyser sal terugstuur.

Aanbeveel: