| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Объясните работу 6 строк кода |
| Автор: Black 26.4.2007, 23:40 | ||
| Недавно начал учить C Не могу понять код:
Все, впринципе, понятно, но то как работает цикл for() с указателями ставит меня в тупик Объясните, пожалуйста. |
| Автор: archimed7592 26.4.2007, 23:48 |
| ss=sd=s эквивалентно sd = s; ss = sd; т. е. инициализируешь ss и sd значением s *sd=*ss - копируешь символ на кот. указывает ss по адресу на кот. указывает sd ss++ - сдвигаешь этот указатель на след символ если *ss не пробел и не табуляция, то сдвигаешь и sd... другими словами, destination(sd) сдвигаешь ток тогда, когда скопирован был не пробел и не табуляция ну а source(ss) сдвигаешь всегда... поскольку строки кончаются нулём - *sd=*ss когда-нибудь вернёт 0 (скопирован 0) и тогда цикл завершится зы. да уж... жестячок получился... |
| Автор: Black 26.4.2007, 23:59 |
| А как получается, что потом выводят в экран переменную s и она уже без пробелов и знаков табуляции.. хотя в for нет упоминаний о переменной s? |
| Автор: Xenon 27.4.2007, 00:23 |
| Black, Почему нет? Мы ею иницилизируем ss и sd. |
| Автор: BigHeart 27.4.2007, 01:33 |
| просто и s и ss и sd это указатели, котоые указывают на одну и ту же область памяти |
| Автор: Rockie 28.4.2007, 17:07 | ||||||||||||
Black, есть переменная, которая содержит какое-то значение:
У каждой переменной есть адрес, его можно получить с помощью &:
Указатель - это переменная, содержащая такие адреса. Объявим указатель, содержащий в себе адрес переменной x:
У нас есть указатель, содержащий в себе адрес перемнной x. Мы хотим через этот указатель получить значение переменной x. Для этого применяется *(разыменование указателя):
Ну и в конце концов, у указателя тоже есть адрес:
Тогда получаем:
|