När det gäller arrays funkar det inte med referenser på det vis du vill, utan där är det pekarnotation som gäller.. men med vanliga variabler funkar detta ju fint:
int vektor = 3;
int &test= vektor;
test = 5;
Här får både vektor och test åtkomst till den minnesplats som hyser talet 3 och senare 5.
Vid array:
int vektor[3] = {1,2,3};
int *test = vektor; //pekaren test pekar på vektor[0]
test++; //stega till test[1]
*test=3;
NU SER ARRAYEN VEKTOR UT SÅ HÄR {1,3,3}
Referenser är annars kalas som parametrar till metoder / funktioner, eftersom det då inte kopieras en massa variabler. Man bör dock alltid ange dem som const då det annars finns en uppenbar risk att man av misstag råkar ändra de anropande variablernas värden.
Varför fungerar inte detta och hur ska jag ändra det för att få det att fungera?
Det funkar inte eftersom en array egentligen är en pekare. Då kan du inte tilldela en variabel av typen int& värdet av din array eftersom de har olika typer.
Om du ska anropa en funktion och skicka med en array med "pass by reference" kan du skriva att funktionen ska ta int* som argument och sedan skicka arrayen. Exempel:
Det fungerar faktiskt riktigt bra.
Dock en sak som skapar bekymmer:
Nu går det ju inte att använda
*test[2] = 3;
Och säg att jag har gått till slutet på en vektor genom att använda ++. Hur skriver jag då ut första talet i vektorn eller tilldelar första talet i vektorn ett värde?
Så fungerar inte det när jag har en så kallad flerdimentionell vektor. Varför och går det att använda flerdimentionella vektorer med referenser/pekare?
Så fungerar inte det när jag har en så kallad flerdimentionell vektor. Varför och går det att använda flerdimentionella vektorer med referenser/pekare?
När du deklarerade "int vektor[3][2];", då allokerade du 6 stycken int på en "rad" om man kan uttrycka det så. På något vis håller programmet reda på att du allokerade den som en 2x3-matris. Dock, funktionen du anropar, vet inte det. Därför vet den inte vad du menar med "test[0][1]". Det kan nämligen vara på olika "avstånd" från pekaren "test" beroende på hur många dimensioner du dimensionerade matrisen med. Vad du skulle behöva göra, är att till din funktion, skicka in info om matrisens dimensioner. Sedan får du utnyttja den informationen till att räkna ut vilka index du ska använda i en en-dimensionell vektor där intarna ligger på en rad, för det är en sådan vektor du egentligen har. Sedan når du dina tal med "test[index]", alltså bara ett index.
Om du alltid har samma storlek på arrayerna när du anropar funktionen kan du definiera en datatyp med typedef som du sedan kan använda både när du deklarerar variabler och i funktionen. Exempel:
Tack för hjälpen (och alla fina förklaringar).
Det slutade med att jag gick på fridolfs linje att använda en lååååååång vektor istället för en flerdimentionell.
255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849