Länk (programmering)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 17 oktober 2019; kontroller kräver 14 redigeringar .

En referens i programmering  är ett objekt som pekar på viss data men som inte lagrar den. Att få ett objekt genom referens kallas dereferencing .

En referens är inte en pekare utan är helt enkelt ett annat namn på ett objekt. Huvudskillnaden mellan en referens och pekare är att en pekare är ett heltal och därför finns operationer med heltal tillgängliga för den, medan endast kopierings- och dereferenceoperationer är tillgängliga för en referens.

I programmeringsspråk kan en referens implementeras som en variabel som innehåller adressen till en minnesplats . Vissa högnivåspråk har också förmågan att använda objektreferenser när objekt skickas till och från en subrutin.

Exempel på länkimplementering

C++

Referenser i C++ måste vara associerade med något objekt. Det finns alltså inga "nullreferenser" (inte associerade med något objekt) i C++. Avlägsnande av referenser i C++ kräver ingen speciell operatör. Således, i C++, är referenser  en form av att skicka en adress till stacken direkt, förbi kopiering och pekare. Vid kompilering ersätts alla referenser till ett objekt och dess namn med ett enda nummer av detta objekt.

I följande exempel skickas parametern x av värde och resultatet skickas med referens. Resultatet av funktionen placeras i resultat:

#include <iostream> använder namnutrymme std ; // utan denna post skulle vi behöva lägga till "std::" till cout och endl tom kvadrat ( int x , int & resultat ) { resultat = x * x ; } int main () { int y = 0 ; //Initiera kvadrat ( 3 , y ); cout << "y=" << y << endl ; //y=9 returnera 0 ; }

Java och C#

Java har inte begreppet pekare, och C# använder sällan begreppet referens istället. Att borthänvisa referenser och ta objektadresser att tilldela referenser kräver ingen speciell operatör.

PHP

Referenser i PHP är ett sätt att komma åt innehållet i en enskild variabel under olika namn. De är inte som C-pekare och är inte symboltabellalias. I PHP är ett variabelnamn och dess innehåll olika saker, så samma innehåll kan ha olika namn. Den närmaste analogin är Unix-filnamn och filer - variabelnamn är katalogposter och variabelinnehåll är själva filerna. Länkar i PHP är analoga med hårda länkar (hardlinks) i Unix-filsystem.

<?php $a = 'text' ; $b =& $a ; skriv ut $b ; $a = 5 ; skriv ut $b ; text 5

Erlang

En referens i Erlang är en  datatyp för en unik identifierare, som endast används för att utföra jämförelser och mönstermatchning [1] :

send_kv ( N , K , V ) -> Reference = make_ref (), % skapa referens { server , N } ! { put , self (), Reference , K , V }, % send request inklusive referens motta { reply , Reference , ok } -> ok % svar på begäran efter 5000 -> { error , timeout } % eller timeout slut .

Se även

Anteckningar

  1. Martin Logan, Eric Merritt, Richard Carlsson. Erlang och OTP i aktion. — Manning, 2011. — S. 36 343. — 397 sid. — ISBN 9781933988788 .