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

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

Восстановить пароль Регистрация
 
Vegas_I
1 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 103
18.01.2014, 14:03     Почему в scanf нужно указывать именно адреса переменных? #1
Почему в функции scanf нужно указывать именно адреса переменных? Почему не работает, когда указываем переменную? Что хранит в себе переменная и что хранит в себе адрес переменной? Разъясните пожалуйста, хочу подробно разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 14:03     Почему в scanf нужно указывать именно адреса переменных?
Посмотрите здесь:

Адреса переменных C++
Почему функция работает именно так? C++
Зачем нужно явно указывать тип переменной? C++
C++ Почему именно С++?
C++ Адреса переменных в моем ноуте
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 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
5282 / 4801 / 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 нужно указывать именно адреса переменных?
Еще ссылки по теме:

При вынесении определения всегда ли нужно указывать функцию как inline явно? C++
C++ Почему именно C#?
Как вывести адреса переменных? C++

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

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

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