Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 24.12.2020
Сообщений: 4

double*p показать, что операция p++ передвигает указатель по памяти на определенное кол-во байт впарво

24.12.2020, 18:28. Показов 5281. Ответов 81
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
double*p показать, что операция p++ передвигает указатель по памяти на определенное кол-во байт впарво
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2020, 18:28
Ответы с готовыми решениями:

double*p показать, что операция p++ передвигает указатель по памяти на определенное кол-во байт впарвл
double*p показать, что операция p++ передвигает указатель по памяти на определенное кол-во байт впарвл

Как написать на masm под х86 функцию поиска кол-ва вхождений последовательности байт в большом массиве байт?
Привет! В общем читаю я файл (большой) и хочу найти кол-во вхождений в этот файл некоторой последовательности байт, допустим "AC DF...

Нюансы синтаксиса: запись double *array - это указатель или что-то иное?
double *array * что это указатель или что?

81
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13229 / 6861 / 1827
Регистрация: 18.10.2014
Сообщений: 17,392
02.01.2021, 06:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Catstail Посмотреть сообщение
Давайте разберемся спокойно. Что с вашей т.з. представляет собой указатель? Строго говоря, он мог бы иметь произвольно сложную структуру, но на самом деле - это просто адрес памяти
Не существует никакого "просто адрес памяти". Адрес памяти на С\С++ платформе не совпадает с машинным адресом памяти. На С\С++ платформе адрес памяти - выдумка конкретного компилятора. Как компилятор придумает, так и будет. И адрес памяти в общем случае имеет нетривиальную внутреннюю структуру.

Цитата Сообщение от Catstail Посмотреть сообщение
(Линейный в современных системах или пара сегмент:смещение в MSDOS).
Нет, конечно. Даже в MSDOS компиляторы реализовывали пять-шесть разных моделей памяти, в которых указатель имели различные размеры и различные представления, в т.ч. для данных и кода. Никакого "сегмент:смещение".

"Линейный адрес" в современных платформах - не более чем джентельменское соглашение использовать плоскую модель памяти в рамках некоей экосистемы. Никто не запрещает вам на платформе x86 в режиме 32-бита полноценно задействовать сегментные регистры и реализовать компилятор, использующий указатели вида сегмент:смещение. Что, конечно же, активно и делалось до того, как плоская модель памяти "устаканилась". Я не скажу навскидку, но возможно это можно сделать и в режиме 64-бита.

Примеров можно привести намного больше, если рассмотреть микроконтроллерные платформы или платформы вроде CUDA.

Цитата Сообщение от Catstail Посмотреть сообщение
А какую длину имеет указатель? Если указатель это адрес, то длина указателя равна длине адреса в данной... скажем так, системе программирования. Для 32-х битной - 4 байта, для 64-х битной - 8. И всегда можно подобрать соответствующий int/long (signed/unsigned; хотя это и не столь важно), который соответствовал по длине адресу. Если я ошибся - ошибка не принципиальна.
Вот по этим попыткам выкрутиться я вижу, что вы, наконец, поняли свою грубую ошибку с long int. Это замечательно. Но ни о каком "ошибка не принципиальна" речи идти не будет. Когда я указываю на ошибку - эта ошибка принципиальна по определению. Хотя присутствующим, конечно, понятно, что свою ошибку вы поняли сразу, после первого же моего поста. Но зачем-то принялись заполнять тему посторонними разглагольствованиями.

Достаточно было просто исправить безалаберное long int на обычное человеческое std::uintptr_t - то, что любой уважающий себя программист использовал бы для такого преобразования - и тема бы не превратилась в 4 страницы дыма и флуда.

Цитата Сообщение от Catstail Посмотреть сообщение
Возражения есть?
Не "возражения есть?", а, как я не раз уже сказал, написана чушь - вердикт финальный. И, также замечу, что я использовал фразу "нет, конечно" уже более одного раза. Каждый раз, когда я говорю "нет, конечно", это сигнал определенным личностям отложить клавиатуру, взять под мышку конспект моих предыдущих постов, разыскать абонемент в библиотеку и посветить недельку-другую самообразованию. Вместо того, чтобы продолжать гнать в тему "дымовую завесу".
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,769
Записей в блоге: 14
02.01.2021, 09:50
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не существует никакого "просто адрес памяти". Адрес памяти на С\С++ платформе не совпадает с машинным адресом памяти. На С\С++ платформе адрес памяти - выдумка конкретного компилятора. Как компилятор придумает, так и будет. И адрес памяти в общем случае имеет нетривиальную внутреннюю структуру.
- странно, что вы не привели хотя бы один пример этой "нетривиальной внутренней структуры". Вы можете сколько угодно надувать щеки, изображать владение абсолютной истиной и т.п. Но вы же прекрасно понимаете, что универсальные высказывания опровергаются единственным контрпримером. В этом смысле, мое положение хуже вашего. Я высказал универсальное высказывание (Адрес в реализациях компиляторов C/С++ - это просто число). Опровергнуть его можно, приведя контрпример: "вот компилятор такой-то... вот его структура адреса..."

Ну и понятна причина вашего плохо скрываемого хамства (когда я говорю "нет конечно"; недельку-другую посвятить самообразованию, выкручиваетесь и т.п.) - это неспособность опровергнуть мое неосторожное высказывание нормальным контрпримером.

Кстати то, что адрес имеет нетривиальную внутреннюю структуру (а это так и есть с т.з. ОС) нисколько не противоречит тому, что это длинное число. Его можно загрузить в регистр (ну, или в пару смежных, что не принципиально).

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Достаточно было просто исправить безалаберное long int на обычное человеческое std::uintptr_t
- чтобы не выглядеть упертым, да, признаю (по-моему не в первый раз), что использование беззнакового целого здесь уместно, а знакового - небрежно. Если бы вы указали на это без неуместного высокомерия и хамства, то не было бы и такого спора (впрочем, вы не единственный виновник; да и моя вина, очевидно, наличествует).


И - да - спасибо IGPIGP и DrOffset за содержательное обсуждение!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2021, 09:50

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и число байт и выделяющую память под...

Зачем тут создается указатель p? И что за "странная" операция *p = *p = 1?
Здравствуйте. Ребят, очень нуждаюсь в помощи, помогите понять. Попался мне на мсдн код, в реализации которого вычисляются 20 чисел...

Почему на указатель в 64-разрядной системе выделяется 8 байт памяти, а в 32-разрядной системе - 4 байта?
Здравствуйте! Почему на указатель в 64-разрядной системе выделяется 8 байт памяти, а в 32-разрядной системе - 4 байта? С чем связано...

Как заставить программу принимать цепочку байт из оперативной памяти, в виде массива байт ?
В памяти процесса есть закодированный блок с байтами, есть адрес этого блока и размер. Есть так-же функция дешифровки этих байт, но она...

Как JVM понимает, что определенный объект занимает определенное количество байтов памяти?
Мой иначальный вопрос следующий - почему существует различие в механизме примитивных и ссылочных переменных? Почему примитивные переменные...


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

Или воспользуйтесь поиском по форуму:
82
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru