Форум программистов, компьютерный форум CyberForum.ru

Почему в функцию можно передавать аргументы с амперсандом или без него и результат тот же самый? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка различного типа чисел http://www.cyberforum.ru/cpp-beginners/thread761572.html
программа сортирует числа одного типа, а как можно сделать так, чтобы сортировались разные типы чисел? #include <iostream> using namespace std; const int n=5; template<class T> void sort(T a) { T buffer; for (int i=0;i<n;i++)
C++ Пересечение двух кругов Привет. Есть входной файл такого формата: 1 1 1 4 4 1 Первый ряд цифр относится к первому кругу, 1 - координата по х, 1 - координата по y, 1 - радиус окружности. Второй ряд цифр относится ко второму кругу, 4 - координа по х, 4 - координата по y, 1 - радиус окружности. Необходимой выяснить, пересекаются ли окружности и вывести ответ в тестовый файл "YES" или "NO". Написал программу. На... http://www.cyberforum.ru/cpp-beginners/thread761567.html
C++ Морской бой=)
Создать игру " Морской бой"
Дано матрицу А размером 8x7. Разделить каждый элемент столбца на элемент этого столбца... C++
Дано матрицу А размером 8x7. разделить каждый элемент столбца на элемент этого столбца, который находится на главной диагонали, если этот элемент не равен 0.
C++ Найти сумму ряда http://www.cyberforum.ru/cpp-beginners/thread761552.html
Найти сумму ряда y с точностью до члена ряда, меньшего 0.0001 для заданного значения x и сравнить эту сумму с функцией контроля. Для вычисления последующего значения члена ряда использовать рекуррентную формулу. с объяснением если можно
C++ Дано одномерный массив Х, размером 15 элементов. Провести циклический сдвиг элементов в массиве вправо на 2 позиции Дано одномерный массив Х, размером 15 элементов. Провести циклический сдвиг элементов в массиве вправо на 2 позиции. подробнее

Показать сообщение отдельно
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
14.01.2013, 17:53     Почему в функцию можно передавать аргументы с амперсандом или без него и результат тот же самый?
К примеру :
C++
1
2
3
4
5
6
7
8
9
10
11
int main() 
{   
    int x=3, y=4;
    swap(&x,&y);
        return 0;
}
void swap(int* a, int* b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
};
И без амперсанда

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main() 
{   
    int x=3, y=4;
    swap(x,y);
        return 0;
}
void swap(int* a, int* b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
};
Первый вариант работает из-за ссылок, а зачем тогда звездочки в переменных функции? Во втором все с указателями, но в первом тоже ссылки в указатели после компиляции переведутся. Почему тогда перемешка ссылок и указателей, я не пойму как это работает(.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru