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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 418
26.09.2013, 11:22     Указатель и амперсанд #1
Всем здрасьте.
У меня тут возник вопрос.
Приведу простой примерчик двух функций(не смотрите на ошибки если есть , дело не в них)
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 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
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
26.09.2013, 12:07     Указатель и амперсанд #3
Цитата Сообщение от BeginerMan Посмотреть сообщение
И да , скажите если что-то не правильно сделал.
Про указатели castaway уже написал.
От себя добавлю, что в Си++ можно использовать вместо указателей ссылки. Так что если в исходном коде в функции Calculate использовать ссылки вместо указателей, то он заработает.
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 418
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     Указатель и амперсанд
Ответ Создать тему
Опции темы

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