Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 16

Указатели и строки

19.10.2013, 10:48. Показов 686. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. В коде есть такой кусок:
C++
1
2
sc = stack.pop();
printf("#%s %d#", &sc, sc);
sc имеет тип unsigned int, понятно что там хранится ASCII код символа. Но почему тогда &sc содержит сам этот символ? Насколько я понимаю, то данная операция возвращает адрес в памяти. Или в данном случае это просто ссылка? Тогда какой смысл содержится в подобном выражении? Это какой-то трюк с приведением типа? Где об этом можно почитать?

2. Есть код:
C++
1
stack.push(*(unsigned int*)res);
Метод push принимает на вход unsigned int, переменная res - это char[4]. Почему не пишут это же без звездочек? Насколько я понял то тут приводят res к типу "указатель на unsigned int", а потом возвращают значение, которое хранится в той ячейке памяти. Правильно ли я думаю, что поскольку res есть указателем на первый элемент строки, то нужно и приводить тип к другому типу указателя, а потом разыменовывать, иначе будет ошибка с приведением указателя на char к unsigned int?

3. Что это вообще за интересный способ превращать строки в unsigned int? Какие плюсы, зачем это делают? Где можно почитать и об этом?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2013, 10:48
Ответы с готовыми решениями:

Указатели, символьные строки и функции: удалить из строки слово с заданным номером
Функция удаляет из строки слово с заданным номером: не знаю как делать, сделал через swich case но нужно без них

Указатели.Строки и указатели
Вот условия ввода строки:Вводить и обрабатывать строки в цикле до тех пор пока первый символ не пробел Условия обработки строки: ...

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

2
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
19.10.2013, 11:33
Начнем с конца. Размер unsigned int - не менее 4 байт, т.е. строка из 4-х символов в него помещается. Такой вот интересный способ. Зачем он нужен - не зная, какие действия производятся с элементами стека, могу только предположить, что кому-то показалось удобнее и нагляднее хранить 3-х буквенные строки в виде целого числа.

Соответственно, чтобы получить из res типа char[4] (он же char*) что-то типа unsigned int, этот res приводится к типу указатель на unsigned int:
C
1
(unsigned int*)res
ну а потом этот указатель разыменовывается (уже как unsgined int):
C
1
*(unsigned int*)res
С printf в обратную сторону: есть sc типа unsigned int, в нем хранятся коды не более 3-х ASCII символов и 0 (по крайней мере, так должно быть). Спецификатор %d печатает все число sc, это понятно. А %s печатает строку по указанному адресу, который интерпретируется как const char*. Указанный адрес - это адрес sc (&sc).
1
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 16
19.10.2013, 11:41  [ТС]
Спасибо, разобрался. Запомню на будущее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2013, 11:41
Помогаю со студенческими работами здесь

Указатели и строки
Здравствуйте. Учу указатели (и строки); появилась куча неясных мне моментов, поэтому прошу разъяснения. 1) const char* obj...

Строки и указатели с++
1. С клавиатуры вводится полный путь к файлу. Напишите программу, которая выделяет из этой строки имя файла Пример: ...

Строки и указатели в C++
Проверить правильность расположения в тексте круглых скобок (количество открывающихся и закрывающихся скобок должно совпадать). Пользуясь...

Указатели и строки
Решил вспомнить, как организовывать работу с указателями на строках. Есть такой фрагмент кода. Вроде всё нормально работает, кроме одного...

Строки и указатели
Выполнить задание двумя способами используя индексы и используя указатели при работе со строками. Удалить в строке все буквы “b”,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru