Hej Geek
Nu er det jo i dag du skal til eksamen, så jeg ved ikke om det allerede er for sent at hjælpe dig. Desværre har jeg først lige fået dit spørgsmål, for jeg tog mig den frihed at tage mit arbejde med hjem i går så jeg kunne se fodbold (hvilken fejl...), så jeg var ikke på min pind hele dagen.
Nå men jeg vil da også gerne henlede på det spørgsmål som tigerdyr henleder til:
http://www.eksperten.dk/spm.asp?id=8262 eller:
http://www.eksperten.dk/spm.asp?id=9744Der har jeg da vist forklaret en del omkring pointere.
Lige som erikjacobsen ville jeg også gerne have nogle mere konkrete spørgsmål at svare på. Hvad er det fx. omkring funktioner du gerne vil vide noget mere om? Men jeg prøver da:
Overførsel af værdier til en funktion kan foregå på to måder: By-value og by-reference. Når en værdi overføres by-value vil man få en kopi af værdien, og denne kopi kan man rode med, uden at originalen bliver berørt. By-reference betyder så selvfølgelig, at man får en reference til værdien, så den værdi man roder med i funktionen, er den samme som originalen derfra hvor man kaldte funktionen, så hvis man ændrer på indholdet af variablen i funktionen, vil ændringen også have fundet sed når man vender tilbage dertil hvor man kaldte funktionen fra. Se her:
void AddShiftedIntegers(int Value1, int Value2, int& Result)
{
Value1<<=1;
Value2<<=1;
Result=Value1+Value2;
}
Her shifter jer de to værdier 1 bit til venstre (det samme som at gange med 2), og ligger derefter de to værdier sammen i Result. Alle tre variabler er blevet ændret på, men kun Result vil være ændret fra den kaldende funktion, da det kun er Result der er overført by-reference. De to andre værdier er kopier.
int main()
{
int Val1=2;
int Val2=3;
int Result=0;
AddShiftedIntegers(Val1, Val2, Result);
// Val1 vil stadig være =2, Val2 vil stadig være =3, og Result vil være ændret til 10
}
Pointerne ved jeg ikke helt hvad jeg skal sige til, udover at du skal kigge på nummer 2 af de føromtalte spørgsmål. Hvis jeg skulle forklare det igen, vil det nok blive nogenlunde det samme en-gang-til :-)
Med hensyn til Assembler, så forstår jeg ikke hvad du mener. Forbindelse mellem assembler og C kode? I de fleste C++ compilere kan man lave assembler direkte:
int Add(int Val1, int Val2)
{
int Result;
asm
{
mov ax, val1
add ax, val2
mov Result, ax
} // END asm block
return Result;
}
Det var hvad jeg kunne gøre for dig. Hvis du har nogle flere, mere konkrete spørgsmål, så stil dem endelig.
Venligst,
DMK