2015-11-18 3 views
0

Я так растерялся, о типах параметров в C++ У меня есть две функции, в следующем коде:разница между указателями и ссылками на C++

void degistir2(int *x, int *y) 
{ 
    int gecici; 
    gecici = *x; *x = *y; 
    *y = gecici; 
} 
void degistir3(int &x, int &y) 
{ 
    int gecici; 
    gecici = x; x = y; 
    y = gecici; 
} 

В чем разница этих функций? Я знаю указатели и ссылки, но я не знаю, как это работает в вышеперечисленных функциях.

+0

Вы не знаете их тогда ... Как типы параметров путают вас? – LogicStuff

+0

Обе функции выполняют точно такую ​​же работу. Правильно? –

+2

Да, это так. [Подробнее здесь] (http://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in). – LogicStuff

ответ

1

В вашем первом примере вашей функции присваивается копия адреса x и y.

Во втором примере вашей функции присваивается тот же экземпляр x и y, что и код, из которого происходит вызов функции.

По умолчанию функции получают копию переменной, передаваемой функции. Оба ваших примера позволяют вам получить доступ к оригинальным x и y различными способами.

См. 7.2-7.4 из this guide для получения более подробной информации и примеров.

Смежные вопросы