Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

26.09.2013, 11:22. Просмотров 1834. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 11:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель и амперсанд (C++):

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Итератор: 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++
Вот программа: #include &lt;iostream&gt; using namespace std; class alpha { private: int data; public: alpha(){}

4
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 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;
}
1
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
26.09.2013, 12:07 #3
Цитата Сообщение от BeginerMan Посмотреть сообщение
И да , скажите если что-то не правильно сделал.
Про указатели castaway уже написал.
От себя добавлю, что в Си++ можно использовать вместо указателей ссылки. Так что если в исходном коде в функции Calculate использовать ссылки вместо указателей, то он заработает.
1
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
26.09.2013, 12:21  [ТС] #4
Ага , спасибо вам.
0
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;
}
0
26.09.2013, 12:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2013, 12:50
Привет! Вот еще темы с ответами:

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

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

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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