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

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

Войти
Регистрация
Восстановить пароль
 
Vegas_I
1 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 103
#1

Почему в scanf нужно указывать именно адреса переменных? - C++

18.01.2014, 14:03. Просмотров 386. Ответов 6
Метки нет (Все метки)

Почему в функции scanf нужно указывать именно адреса переменных? Почему не работает, когда указываем переменную? Что хранит в себе переменная и что хранит в себе адрес переменной? Разъясните пожалуйста, хочу подробно разобраться.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.01.2014, 14:09     Почему в scanf нужно указывать именно адреса переменных? #2
Если передать в функцию просто переменную, то это - передача по значению (передаётся копия переменной), поэтому, все изменения копии в функции, никак не отразятся на самой переменной. Если же передаётся адрес, то, изменения содержимого по этому адресу, изменят и саму переменную.
__General__
24 / 24 / 3
Регистрация: 04.01.2014
Сообщений: 91
Завершенные тесты: 2
18.01.2014, 14:14     Почему в scanf нужно указывать именно адреса переменных? #3
Vegas_I, в scanf нужно передать адрес переменной для того, чтобы по этому адресу сохранилось значение, вводимое пользователем:
Цитата Сообщение от alsav22 Посмотреть сообщение
Если же передаётся адрес, то, изменения содержимого по этому адресу, изменят и саму переменную.
Vegas_I
1 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 103
18.01.2014, 14:20  [ТС]     Почему в scanf нужно указывать именно адреса переменных? #4
Хорошо, а почему тогда пишет "The variable is being used without being initialized". Ведь судя по тому, что вы сказали, программа должна работать. Пусть сама переменная не измениться(а только её копия), но тем не менее она должна работать.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.01.2014, 14:26     Почему в scanf нужно указывать именно адреса переменных? #5
Цитата Сообщение от Vegas_I Посмотреть сообщение
а почему тогда пишет "The variable is being used without being initialized".
Для этого нужно видеть код, по которому такое пишет.

Добавлено через 4 минуты
Скорее всего, передаёте по значению неинициализированную переменную. Но так как адрес есть даже у неинициализированной переменной, то, при передаче адреса, такое предупреждение уже не выдаётся.
Vegas_I
1 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 103
18.01.2014, 14:27  [ТС]     Почему в scanf нужно указывать именно адреса переменных? #6
C++
1
2
int k;
char z;
...
C++
1
scanf("%d %c", k, &z);
Я убрал "&" перед "k". Пишет "The variable 'k' is being used without being initialized"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2014, 14:39     Почему в scanf нужно указывать именно адреса переменных?
Еще ссылки по теме:

C++ Почему именно C#?
Как вывести адреса переменных? C++
C++ Нужно заменить cout на printf а cin на scanf
C++ Обращение к массиву структур, почему именно так?
Почему при использовании функции scanf программа выдаёт ошибку? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.01.2014, 14:39     Почему в scanf нужно указывать именно адреса переменных? #7
5 пост.
Yandex
Объявления
18.01.2014, 14:39     Почему в scanf нужно указывать именно адреса переменных?
Ответ Создать тему
Опции темы

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