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

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

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

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

26.09.2013, 11:22. Просмотров 1582. Ответов 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     Указатель и амперсанд
Посмотрите здесь:

Итератор: for и амперсанд - C++
В чем разница нового и старого for в переборе коллекций? vector&lt;Point&gt; vec; ... for(auto it=vec.begin(); it!=vec.end();...

Амперсанд перед именем функции - C++
Недавно столкнулся с таким представлением функции: double &amp;re(void) Так и не понял, зачем ставится амперсанд перед именем. Адрес...

Объявление функций. Амперсанд в сигнатуре метода - C++
На днях начал изучать С++. Сам джавист. Вижу такую сигнатуру: void write_analysis(ostream&amp; out, const string&amp; name, double analysis(const...

Не пойму что означает амперсанд в инструкции if - C++
Здравствуйте, объясните пожалуйса, что знчит амперсант в инструкции if ведь здесь он не выполняет функцию поразрядного оператора, да и на...

Выделить цифры в строке после символа амперсанд - C++
ПОМОГИТЕ ЗАМУЧАЛСЯ Я УЖЕ В STRINGGRID В КОЛОНКЕ ИМЕЮТСЯ СТРОКИ Ia=&amp;17А Ib=&amp;18А Ic=&amp;19А Ua=&amp;21В Ub=&amp;22В Uc=&amp;23В Iab=&amp;37А ...

Перегружаемый оператор присваивания, зачем нужен амперсанд? - C++
Вот программа: #include &lt;iostream&gt; using namespace std; class alpha { private: int data; public: alpha(){}

Амперсанд в типе метода класса: зачем нужен и как он работает? - C++
Здравствуйте. Помогите понять зачем нужен амперсанд в функции-члене класса(double &amp; func();).

указатель на указатель или присваивание объекта - C++
Доброе утро. Вот я в своем классе создал параметр class TTo4ka { ... TGrup **MyGrup; ... };

Указатель на указатель и Нарушение прав доступа - C++
функция, добавляющая новый элемент в динамический массив из указателей При вызове : pData=Add(NULL,1,question); Работает исправно,...

Указатель на указатель - разница способов - C++
int a =5; int *b = &amp;a; int **e =&amp;b; //первый способ //Нужно писать столько * скока указателей.. int *f = b; //Втрой...

Преобразование в указатель на указатель на константу - C++
В упор не могу понять правила которые приводит Дьюхерст для преобразований &quot;многоуровневых&quot; указателей. (Дьюхерст &quot;Скользкие места...

Сделать указатель на указатель NULL - C++
есть код: class Matrix { private: double **data; //нужно, чтобы в самом начале это было NULL double *b; //и это тоже было NULL ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 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
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
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     Указатель и амперсанд
Ответ Создать тему
Опции темы

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