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

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

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

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

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

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

Почему при присваивании адреса массива не ставится знак '&' получения адреса - C++
int main() { int a = { 2, 3 }; int* b; b = a; //Почему при присваивании адреса массива не ставится знак '&' получения адреса. ...

Зачем нужно явно указывать тип переменной? - 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; } ...

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

Добавлено через 4 минуты
Скорее всего, передаёте по значению неинициализированную переменную. Но так как адрес есть даже у неинициализированной переменной, то, при передаче адреса, такое предупреждение уже не выдаётся.
0
Vegas_I
1 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 103
18.01.2014, 14:27  [ТС] #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"
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.01.2014, 14:39 #7
5 пост.
0
18.01.2014, 14:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2014, 14:39
Привет! Вот еще темы с ответами:

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

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

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

Как вывести адреса переменных? - C++
Помогите доработать программу, так чтобы выводились адреса значений #include <iostream.h> #include <conio.h> void main(void) { ...


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

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

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