Forum: Funktioner med Referenser

Forum huvudsida -> Programmering -> Funktioner med Referenser

Sidor: 1

Till botten

rqrd 16:12 - 11:a Maj 2008 | Post #1
Medlem
Inlägg: 1


Skicka PM
Förklara gärna lite bättre vad exakt den koden gör, förstår inte skillnaden mellan den och den koden som returnerar ett värde till funktionen.

Sen undrar jag om detta:

Skillnaden i koden finns då vi deklarerar argumenten/parametrarna till funktionen, då anger vi en ampersand (&-tecken) innan argumentets namn.

Vad gör ampersand tecknet då? (&)

Tack.




ozamosi 16:33 - 11:a Maj 2008 | Post #2
Administratör
Inlägg: 1129


Skicka PM
&-tecknet skapar en referens. En referens är ett alias till innehållet.

Antag att du har följande kod:
  1. int funktion(int &tal_i_funktion)
  2. {
  3. //Gör whatever
  4. }
  5.  
  6. int main ()
  7. {
  8. int tal = 3;
  9. funktion(tal);
  10. }

Om vi tar bort &-tecknet från skapandet av tal_i_funktion, så kommer tal_i_funktion att bli en ny variabel med värdet 3. När vi lägger till &-tecknet så blir tal_i_funktion Samma variabel som var. var har värdet 3, så tal_i_funktion har också det, men det intressanta är att om du sätter tal_i_funktion till t ex 4 så sätter du samtidigt även tal till 4, eftersom både tal_i_funktion och tal är samma variabel.

Edit: en poäng med det är att du kan trycka in flera referenser i en funktion. Om du t ex vill göra en funktion för att ta reda på dimensionerna och positionen på en låda på skärmen om du gör ett 2d-spel (x, y, bredd, höjd alltså), så kan du göra en funktion som vill ha som argument själva lådan, och variabler för x, y, bredd och höjd, som den skapar referenser till. Sedan kan den försöka fylla i alla de variablerna från låd-variabeln, för att slutligen returnera TRUE eller FALSE beroende på om den anser sig ha lyckats eller inte.

-------------------------
Ljusblå

Senast redigerad 16:39 - 11:a Maj 2008


FunkyChicken 18:15 - 11:a Maj 2008 | Post #3
Nyhetsredaktör
Inlägg: 800


Skicka PM
    Citat av ozamosi:

Edit: en poäng med det är att du kan trycka in flera referenser i en funktion. Om du t ex vill göra en funktion för att ta reda på dimensionerna och positionen på en låda på skärmen om du gör ett 2d-spel (x, y, bredd, höjd alltså), så kan du göra en funktion som vill ha som argument själva lådan, och variabler för x, y, bredd och höjd, som den skapar referenser till. Sedan kan den försöka fylla i alla de variablerna från låd-variabeln, för att slutligen returnera TRUE eller FALSE beroende på om den anser sig ha lyckats eller inte.


Det där gick faktiskt att förstå om man försökte riktigt, riktigt, ordentligt.

Saken är alltså den att om du skickar en variabel till en funktion "som vanligt" så får funktionen bara en kopia av variabeln och kan inte ändra på den riktiga variabeln. Skriver du & först så skickas en referens till originalvariabeln, och alla ändringar som görs i funktionen påverkar också den. Det kan vara bra eller dåligt, beroende på vad man vill ska hända. Det & gör rent tekniskt är att istället för att skicka med variabelns värde och kopiera det till en ny variabel, så skickar den minnesaddressen till där värdet är sparat.




Sidor: 1

Forum huvudsida -> Programmering -> Funktioner med Referenser
Atom feed

Du får inte posta i den här tråden | Till toppen