Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Листинг 8.3. Что же записано в указателе?
1: // Листинг 8.3. Что же хранится в указателе? 2: 3: #include < iostream.h> 4: 5: 6: int main() 7: { 8: unsigned short int myAge = 5, yourAge = 10; 9: unsigned short int * pAge = & myAge; // Указатель 10: cout < < " myAge: \t" < < myAge < < " \t yourAge: \t" < < yourAge < < " \n"; 11: cout < < " & myAge: \t" < < & myAge < < " \t& yourAge; \t" < < & yourAge < < " \n"; 12: cout < < " pAge; \t" < < pAge < < " \n"; 13: cout < < " *pAge: \t" < < *pAge < < " \n"; 14: pAge = & yourAge; // переприсвоение указателя 15: cout < < " myAge: \t" < < myAge < < " \t yourAge; \t" < < yourAge < < " \n"; 16: cout < < " & myAge: \t" < < & myAge < < " \t& yourAge: \t" < < & yourAge < < " \n"; 17: cout < < " pAge: \t" < < pAge < < " \n"; 18: cout < < " *pAge: \t" < < *pAge < < " \n"; 19: cout < < " & pAge: \t" < < & pAge < < " \n"; 20: return 0; 21: }
Результат: myAge: 5 yourAge: 10 & myAge: 0x355C & yourAge: 0x355E pAge: 0x355C *pAge: 5 myAge: 5 yourAge: 10 & myAge: 0x355C & yourAge: 0x355E pAge: 0x355E *pAge: 10 & pAge: 0x355A (Ваши результаты могут отличаться от приведенных.)
Анализ: В строке 8 объявляются две переменные типа unsigned short — myAge и yourAge. Далее, в строке 9, объявляется указатель на этот тип (pAge). Этому указателю присваивается адрес переменной myAge. В строках 10 и 11 значения и адреса переменных pAge и myAge выводятся на экран. Обращение к значению переменной myAge путем разыменования указателя pAge выполняется в строке 13. Перед тем как перейти к дальнейшему изучению материала, подумайте, все ли вам понятно в рассмотренном примере. Еще раз проанализируйте текст программы и результат ее выполнения. В строке 14 указателю pAge присваивается адрес переменной yourAge. После этого на экран выводятся новые значения и адреса переменных. Проанализировав результат программы, можно убедиться, что указатель pAge действительно содержит адрес переменной youtAge, а с помощью разыменования этого указателя можно получить ее значение. Строка 19 выводит на экран значение адреса указателя pAge. Как любая другая переменная, указатель также имеет адрес, значение которого может храниться в другом указателе. О хранении в указателе адреса другого указателя речь пойдет несколько позже.
Рекомендуется: Используйте оператор разыменовывания (*) для получения доступа к данным, сохраненным по адресу, содержащемуся в указателе. Инициализируйте указатель нулевым значением при объявлении, если заранее не известно, для указания на какую переменную он будет использоваться. Помните о разнице между адресом в указателе и значением переменной, на которую ссылается этот указатель.
|