Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Blitzor DDD
13 / 13 / 1
Регистрация: 17.08.2015
Сообщений: 460
#1

Изменить значение переменной из функции

15.10.2015, 13:04. Просмотров 2108. Ответов 3
Метки нет (Все метки)

Здравствуйте!

Пытаюсь прошариться в работе с указателями и вот не могу понять одну штуку.
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
 
using namespace std;
 
/* УКАЗАТЕЛЬ - ЭТО ПЕРЕМЕННАЯ, КОТОРАЯ ХРАНИТ АДРЕС ДРУГОЙ ПЕРЕМЕННОЙ  */
 
 
bool input(int a){
    if(cin>>a)    //если ввод прошел успешно
    return true;  //то вернуть истину, иначе
 
    else return false; //вернуть фальше
}
 
// воздействуем на переменную c через указатель
bool input2(int *a){   // в качестве аргумента функции выступает указатель
    if(cin>>*a)        // указатель разыменован
    return true;       // то вернуть истину, иначе
 
    else return false; // вернуть фальше
}
 
int main ()
{
    cout<<"Hi there! \n";
 
    int b=0;  // инициализировали b нулем
    cout<<"Enter the variable of function \n input(b)  b=  ";
    input(b); // ждем ввода числа, после ввода, то, что мы ввели записывается в переменную a
    cout<<"b = "<<b<<endl; // а переменная b никак не меняется
 
    int c=0;  // инициализировали c нулем
    cout<<"Enter the variable of function \n input2(c)  c=  ";
    input2(&c); // вот тут не могу понять ! Как так, в качестве аргумента выступает АДРЕС?? 
                // 
    cout<<"c = "<<c<<endl; //
 
 
    return 0;
}

вопрос у меня в следующем.
Есть функция:

C++
1
2
3
4
5
6
7
// воздействуем на переменную c через указатель
bool input2(int *a){   // в качестве аргумента функции выступает указатель
    if(cin>>*a)        // указатель разыменован
    return true;       // то вернуть истину, иначе
 
    else return false; // вернуть фальше
}
и я хочу в главной процедуре через эту функцию изменить значение переменной c

C++
1
2
3
int c=0;  // инициализировали c нулем
    cout<<"Enter the variable of function \n input2(c)  c=  ";
    input2(&c); // вот тут не могу понять ! Как так, в качестве аргумента выступает АДРЕС??
что происходит, когда я ввожу с клавиатуры число. В качестве аргумента функции input2 выступает адрес?? или указатель?? Не могу понять, что здесь происходит...

Если не затруднит, объясните пожалуйста попонятнее или дайте ссылку, где это объясняется внятно.

Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2015, 13:04
Ответы с готовыми решениями:

Изменить значение переменной в функции
Возможно ли изменить значение переменной, передаваемой в функцию? Как-то так:...

Вычислить значение функции (значение переменной Х передается в качестве параметра функции)
Написать функцию, которая возвращает вычисленное значение функции. Значение...

Возможно ли изменить начальное значение переменной?
У нас есть код: int main(){ const int val=5; cout&lt;&lt;val; //Какая то...

Как изменить значение глобальной переменной в процедуре?
Как изменить значение глобальной переменной в процедуре? #include &lt;iostream&gt;...

Изменить значение переменной через определенное время
Всем доброго времени суток. Допустим есть значение a=10; Надо его изменить на...

3
nmcf
6271 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
15.10.2015, 13:43 #2
Указатель и есть адрес.
0
hdnn
13 / 13 / 10
Регистрация: 14.11.2012
Сообщений: 56
Завершенные тесты: 2
15.10.2015, 14:34 #3
Ты завёл переменную int c. Она хранится в памяти по какому-то адресу.
Такой записью: &c - ты просишь дать этот адрес.
функция input2(int *a) просит адрес, по которому она найдёт переменную типа int.
И вот так input2(&c) - ты передал ей адрес на переменную c.
А уже сама функция input2 записывает в память по этому адресу полученное значение
0
mimicria
return (true);
1960 / 1097 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
15.10.2015, 15:26 #4
Фишка представленных двух вариантов в том, что в первом случае не происходит изменения значения исходной переменной, потому что изменяется не сама переменная, а её копия в стеке, уничтожаемая по завершению функции.
Во втором случае работа идёт непосредственно с адресами в памяти, поэтому копии не создаются.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2015, 15:26

Как изменить значение переменной в бесконечном цикле клавишей?
Есть бесконечный цикл, выводящий в консоль значение одной и той же переменной....

Как изменить значение переменной, переданной в списке с переменным числом аргументов
Помогите!!! Начал изучать С++ Возникла такая проблема. Когда мне нужно...

Определить значение переменной на выходе функции
Всем привет! Чет ваще не вкуриваю, помогите с задачей. Буду признателен. ...


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

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

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