Witam,
Mam napisaną funkcję wymiany dwóch liczb typu int (jako wstawka asemblera). Jest pewien problem:
w funkcji zmienne wymieniają dane, ale po wyjściu z funkcji zmienne pozostają niezmienione. Dla
rozjaśnienia podaję kod:
void swap(int *x, int *y)
{
__asm
{
mov eax, [x]
mov ebx, [y]
mov [x], ebx
mov [y], eax
}
cout << *x << " " << *y << endl; //tutaj: x = 10, a y = 15 - zamiana nastąpiła - tak jak być powinno
}
int main()
{
int x = 15, y = 10;
swap(&x, &y);
cout << x << " " << y << endl; //tutaj: x = 15, a y = 10 - zamiana nie nastąpiła, dlaczego?
return 0;
}
Teraz pytanie: dlaczego tak się dzieje, co robię źle?
Z góry dzięki za odp.