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

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

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

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

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

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

Зачем нужно явно указывать тип переменной? - C++
Всем привет! Объясните зачем нужно явно указывать тип переменной? Например в С++ это обязательно, а php нет. Просто говорят что не...

Почему именно C#? - C++
В конечном итоге нужно программировать на 1С, но так как репетитора по 1С найти не реально, решила изучить какой-нибудь-любой язык ООП, в...

Почему именно С++? - C++
Всем привет. Кто может объяснить, почему везде востребованы программисты С++? Как эти программисты пишут оконные приложения, если все...

Адреса переменных - C++
У меня возник вопрос, можно ли записать в бинарный файл адрес переменной? Если да, то как? И можно ли будет другой программой считать этот...

При вынесении определения всегда ли нужно указывать функцию как inline явно? - C++
Бьярни пишет class char_stack { int size; char* top; char* s; public: char_stack(int sz) { top=s=new char; } ...

Почему функция работает именно так? - C++
Доброго времени суток! Помогите разобраться с кодом пожалуйста У меня есть фигурка которая крутится на экране. Есть функция которая...

Почему при использовании функции scanf программа выдаёт ошибку? - C++
При использовании команды scanf программа выдаёт ошибку. Printf работает нормально. В чем может быть проблема? Среда разработки - Dev c++...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 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
5416 / 4812 / 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++
Помогите доработать программу, так чтобы выводились адреса значений #include <iostream.h> #include <conio.h> void main(void) { ...

Адреса переменных в моем ноуте - C++
Вот интересно! По идее адреса должы различаться, у меня же они трижды вышли одинаковые. Нормально ли это? Или проще вобще с этим не...

Обращение к массиву структур, почему именно так? - C++
Почему в не которых функциях к елементам структуры обращаются *invtry , а в других просто invtry? #include <stdafx.h> #include...

Адреса двух разных переменных одинаковы - C++
Добрый день! Пытаюсь вывести в Memo1 адреса переменных: int a=5555; int b=6156; Memo1->Lines->Add(IntToStr(&a)); ...

Нужно перевести cout/cin в printf/scanf - C++
Пожалуйста,помогите,нужно перевести cout/cin в printf/scanf. #include <iostream> #include <cmath> #include <Windows.h> ...


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

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

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