Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 17:58   #1
xays
Пользователь
 
Аватар для xays
 
Регистрация: 05.02.2012
Сообщений: 17
По умолчанию Указатель в цикле for

Сидел писал себе код писал и в итоге столкнулся с проблемой.
Начал откатывать себя постепенно назад и в итоге пришёл вообще к самому маленькому варианту кода который так же как и более огромный отказывается делать то что я хочу
Код HTML:
int varName;
cin >> varName;
for (;;)
{
	varName++;
	int* varName2 = &varName;
	cout <<varName2;
}
Я хотеол сделать так что бы указатель который хранит адрес памяти черед цикл выводил всё время новый адрес памяти до бесконечности.

Я это код понимаю так:
Объявляется переменная
Код HTML:
int varName;
Присваиваем переменнгой varName значение
Код HTML:
cin >> varName;
Начинаем бесконечный цикл
Код HTML:
for (;;)
Инкрементируем ранее созданную переменную varName (Добавляем +1)
Код HTML:
varName++;
Создаём указатель с именем varName2 который содержит адрес памяти переменной varName
Код HTML:
int* varName2 = &varName;
выводим на экран адрес памяти
Код HTML:
cout <<varName2;
Почему он получает только 1 адрес и всё.
Ввожу например 100 он так и будет адрес сотни штамповать хотя там же инкремент стоит он же должен наращивать и тем самым давать на экран новые адреса от значений
100
101
102
103
....... и так далее.
Где я лопухнулся
xays вне форума Ответить с цитированием
Старый 18.02.2012, 18:08   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Почему он получает только 1 адрес и всё.

потому что ты делаешь:

Создаём указатель с именем varName2 который содержит адрес памяти переменной varName

Ты каждый раз берёшь адрес одной и той же переменной и выводишь его.
У тебя каждый раз выводится один и тот же адрес.
_Bers вне форума Ответить с цитированием
Старый 18.02.2012, 18:12   #3
LordAlex91
Новичок
Джуниор
 
Регистрация: 18.02.2012
Сообщений: 4
По умолчанию

Непонятная какая то программа =) Смысла не вижу
Ну а по сути

Ты хочешь чтобы у тебя адрес всегда выводился разный? Так он НЕ будет выводится разный потому что ты присваиваешь этому указателю адрес переменной varName. Она у тебя всегда имеет один и тот же адрес в цикле.

Ты инкрементируешь значание переменной varName, что никак не меняет её адреса.

PS Не понял что ты хочешь увидеть на экране. Ты делаешь абсолютно две разные вещи помоему.

PSS И еще, ты создаешь указатель а еще нужно выделять память под него, если я не ошибаюсь.

Цитата:
int varName;
std :: cin >> varName;
for ( ; ; )
{
varName++;
int* varName2 = new int;
std :: cout <<varName2;
};
LordAlex91 вне форума Ответить с цитированием
Старый 18.02.2012, 18:26   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от LordAlex91 Посмотреть сообщение
PSS И еще, ты создаешь указатель а еще нужно выделять память под него, если я не ошибаюсь.
Ошибаешься.
_Bers вне форума Ответить с цитированием
Старый 18.02.2012, 21:14   #5
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Ты указываешь каждый раз на одну и ту же переменную. Ты меняешь значение этой переменной, но не её адрес.
Изменять указатель нужно (хотя может я ошибаюсь).
rmv240899 вне форума Ответить с цитированием
Старый 18.02.2012, 21:42   #6
xays
Пользователь
 
Аватар для xays
 
Регистрация: 05.02.2012
Сообщений: 17
По умолчанию

Закрываю тему.
Ошибку свою понял.
Просто очень очень сильно перегрелся и элементарные вещи уже не соображал.
Совсем забыл что ячейка под память выделяется одна и значение поменяв не изменит номер ячейки.
Вообщем заклинило меня сегодня окончательно.
xays вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
*указатель = *указатель tiger() Общие вопросы C/C++ 7 10.05.2011 12:49
указатель на указатель петя иванов Общие вопросы C/C++ 5 10.04.2011 02:23
Указатель... Romario92 Общие вопросы C/C++ 16 22.10.2010 20:37
Указатель RobinVit Помощь студентам 3 05.05.2010 16:18
(!)указатель на указатель(!) (C)stalin(Cpp) Общие вопросы C/C++ 0 07.06.2009 15:32