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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 423
#1

Указатель и амперсанд - C++

26.09.2013, 11:22. Просмотров 1432. Ответов 4
Метки нет (Все метки)

Всем здрасьте.
У меня тут возник вопрос.
Приведу простой примерчик двух функций(не смотрите на ошибки если есть , дело не в них)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Calculate(int*,int*);
 
void main()
{
    int one = 1;
    int two = 2;
    Calculate(one,two);
    //вывести к примеру число one
    cout<<one;
}
 
void Calculate(int* a,int* b)
{
    int c;
    с = a + b;
    a = c;
}
Здесь на сколько я знаю , должен вывести число 3;
И да , скажите если что-то не правильно сделал.

А что будет , если в функции Calculate написать в члены (int&,int&) ???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Calculate(int&,int&);
 
void main()
{
    int one = 1;
    int two = 2;
    Calculate(one,two);
    //вывести к примеру число one
    cout<<one;
    //Что должно выйти?
}
 
void Calculate(int& a,int& b)
{
    int c;
    с = a + b;
    a = c;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 11:22     Указатель и амперсанд
Посмотрите здесь:

C++ Амперсанд перед именем функции
Приведение любого двумерного массива к типу указатель на указатель C++
Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель C++
Выделить цифры в строке после символа амперсанд C++
Итератор: for и амперсанд C++
C++ Не пойму что означает амперсанд в инструкции if
Расскажите, как здесь работает указатель на указатель? C++
Почему указатель на указатель объявляется как float **A; C++
Объяснить работу функции, возвращающей указатель на указатель на char C++
C++ Объявление функций. Амперсанд в сигнатуре метода
C++ Указатель на указатель, функции для создания новых массивов?
Амперсанд в типе метода класса: зачем нужен и как он работает? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
26.09.2013, 11:44     Указатель и амперсанд #2
С ссылками правильно.
С указателями так надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Calculate( int *a, int *b )
{
    int c;
    с = *a + *b;
    *a = c;
}
 
void main()
{
    int one = 1;
    int two = 2;
    Calculate( &one, &two );
    //вывести к примеру число one
    cout<<one;
}
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
26.09.2013, 12:07     Указатель и амперсанд #3
Цитата Сообщение от BeginerMan Посмотреть сообщение
И да , скажите если что-то не правильно сделал.
Про указатели castaway уже написал.
От себя добавлю, что в Си++ можно использовать вместо указателей ссылки. Так что если в исходном коде в функции Calculate использовать ссылки вместо указателей, то он заработает.
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 423
26.09.2013, 12:21  [ТС]     Указатель и амперсанд #4
Ага , спасибо вам.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
26.09.2013, 12:50     Указатель и амперсанд #5
C++
1
2
3
4
5
6
void Calculate(int* a,int* b)
{
    int c;
    с = a + b;
    a = c;
}
a и b это указатели и чтобы узнать какое число в них записано, их нужно разыменовывать, т.е. ставить звездочку перед переменной

C++
1
2
3
4
5
6
void Calculate(int* a,int* b)
{
    int c;
    с = *a + *b;
    *a = c;
}
Yandex
Объявления
26.09.2013, 12:50     Указатель и амперсанд
Ответ Создать тему
Опции темы

Текущее время: 06:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru