Referens

Från Unix.se, den fria unixresursen.

En referens är i C++ en indirekt variabel, ungefär som en pekare men begränsad så att man inte kan använda "perkararitmetik" (dvs sätta godtyckliga värden på pekaren). En referens kan bara peka på minne som man faktiskt har (eller i alla fall har haft) en variabel i. Att ändra på en referens ändrar på variabeln den refererar till, det går inte att ändra på själva "referensadressen".

Java har referenser i stället för pekare (en variabel i Java är antingen av en inbyggd typ eller en referens till ett objekt). C++ har både referenser och pekare.

Argument till funktioner kan skickas antingen som referenser eller som värden (kopior). Om man skickar parametrar som referenser kan en funktion ändra på sina parametrar. En del programspråk skickar alltid parametrar som värden, andra alltid som referenser, och i ytterligare andra kan man välja själv när man deklarerar funktionen.

Exempel

Några exempel i C++ (som har både pekare och referenser).

int x = 17;    // ett heltal

int& xr = x;   // en referens till heltalet x
xr++;          // nu är x = 18

int *xp = &x;  // en pekare till heltalet x
(*xp)++;       // nu är x = 19
xp++;          // nu pekar xp "efter" x
// att försöka använda xp nu skulle troligen ge segmentfel

En detalj som kan vara förvirrande är att ampersand ("&") används både som typmodifierare för att markera en referens och som operator för att ta adressen av en variabel.

Personliga verktyg