Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/56: Рейтинг темы: голосов - 56, средняя оценка - 4.66
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433

Указатели в с++ указывают только на адрес?

25.08.2015, 23:39. Показов 13862. Ответов 213
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например указатель int *p; Он может инициализироваться только адресом?(и ничем другим) например *p=&s
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.08.2015, 23:39
Ответы с готовыми решениями:

Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели на этот массив равны.
Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели на этот массив - равны.

Указатели, адрес переменной
int main(коллеги!) Снова прошу меня поправить! Есть такой пример: int *ptr; // переменная - ptr, указывает на - int...

Указатели и ссылки. Как сохранить адрес?
Небольшая путаница с указателями и ссылками. Допустим,есть некий указатель p1, который указывает на экземпляр класса a1 в динамической...

213
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.08.2015, 18:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hoggy Посмотреть сообщение
как вы можете жить с такими противоречиями?
Это называется эволюция взглядов.
Цитата Сообщение от hoggy Посмотреть сообщение
эквивалент:
Никакой это не эквивалент.
Цитата Сообщение от hoggy Посмотреть сообщение
научились оптимизировать неиспользуемые результаты,
Так оптимизацию можно и отключить перед проверкой.

Кстати, есть вот и такое мнение в интернетах:
So the 'unary * operator' returns a reference to the object that was pointed at by the pointer it was applied to. (No de-referencing has happened at this point).
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.08.2015, 18:38
Цитата Сообщение от Tulosba Посмотреть сообщение
Никакой это не эквивалент.
чем является результат выражения?
C++
1
   *pointer;
временная ссылка, или как вы думаете?

Цитата Сообщение от Tulosba Посмотреть сообщение
Так оптимизацию можно и отключить перед проверкой.
это не аргумент,
потому что уже борьба с последствиями UB.

well-formed программа не зависит от оптимизаций.

Цитата Сообщение от Tulosba Посмотреть сообщение
So the 'unary * operator' returns a reference to the object that was pointed at by the pointer it was applied to. (No de-referencing has happened at this point).
мне не понятна эта фраза.
либо мой английский,
либо последнее предложение противоречит первому.
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
28.08.2015, 18:51
Цитата Сообщение от hoggy Посмотреть сообщение
либо последнее предложение противоречит первому.
Может имеется ввиду что к памяти не осуществляется доступ и производится только смена синтаксиса и обращения? Были вроде пример и тема про разыменовывание NULL.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.08.2015, 19:07
Цитата Сообщение от Enno Посмотреть сообщение
Может имеется ввиду
может быть.

но не принципиально.

все равно это UB.

об этом говорит стандарт.
об этом говорят баги оптимизации.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.08.2015, 20:36
Цитата Сообщение от Tulosba Посмотреть сообщение
И что здесь не так?
Ну как бы NULL = 0 и реально в указатель пишется 0 (кто не верит приведу ассемблерный листинг). А запись по нулевому адресу под DOS может иметь смысл.
И допустим архитектуру, где доступно все адресное пространство и исполняемый файл может быть загружен в любое место. Что делать с null, чтобы он соответствовал стандарту?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.08.2015, 20:38
Цитата Сообщение от shmkv Посмотреть сообщение
и реально в указатель пишется 0 (кто не верит приведу ассемблерный листинг)
ассемблер - монопенисуален правилам языка с++.

Цитата Сообщение от shmkv Посмотреть сообщение
Что делать с null, чтобы он соответствовал стандарту?
это будет проблема компилятора на данной платформе.
который преобразует null в какую нибудь каку,
которую вы сможете увидеть в ассм-выхлопе,
который монопенисуален правилам языка.

потому что согласно правилам - nullptr и в африке nullptr.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.08.2015, 20:39
hoggy, это не ответ на вопрос.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.08.2015, 22:02
Цитата Сообщение от shmkv Посмотреть сообщение
это не ответ на вопрос.
вы не поняли.
любое адрессное пространство можно воспринимать, как виртуальное.
как неккую абстракцию

вот только на это можно забить и не париться.
не нужно знать, что там под капотом,
что бы пользоваться.

null - не ваша трудность.
это - геммор компилятора.


Цитата Сообщение от shmkv Посмотреть сообщение
допустим архитектуру, где доступно все адресное пространство
под каждую платформу - свой компилятор.
который гребет этот гемморой.

допустим, вы создаете объект,
который компилятор решил расположить по "физически нулевому адресу".
вас это в любом случае не касается.

ваше дело - поиметь объект, или его адрес.

если на какой нибудь микроволноффке вам потребуется самостоятельно решать,
где лоццировать объекты и приспичит прифигачить его на "нулевой физический",
значит там будет сишечка со своим блэкджеком, которая такое умеет,
и заточенна именно под эту платформу.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.08.2015, 22:13
Цитата Сообщение от hoggy Посмотреть сообщение
который компилятор решил расположить по "физически нулевому адресу".
А если у меня по этому адресу, например, какая-то системная таблица или mmio, что делать? Как получить доступ?
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
29.08.2015, 00:02
Цитата Сообщение от shmkv Посмотреть сообщение
Вот эта фраза мне не понятна.
Представь себе что ты написал указатель = null(0, NULL, nullptr не суть) или ты увидел такую запись в чужом коде твои мысли что в указателе?
а) Там объект по адресу 0.
б) Там ничего.
Ну или свой вариант.

castaway, уж точно не буду слушать советы от человека у которого из аргументов только "одна я тут красивая и с бантиком".
1
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.08.2015, 00:05
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Ну или свой вариант.
Там null.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
29.08.2015, 00:45
Цитата Сообщение от shmkv Посмотреть сообщение
Там null.
А по русски, там что? Математический нуль (т.е. ничего) или объект по нулевому адресу? Зачем вообще этот null нужен то? Почему он подходит под любой тип указателя? Чем указатель на пустой объект (и как тут такую версию родили) отличается от пустого указателя? Как еще можно положить ничего в переменную кроме как задать специальную константу? Почему в БД null это не нулевой указатель? Почему в бейсике null (нуль) = nothing (ничего)?

Вообще кто-то хоть раз видел чтобы английское слово null обозначало число? Число нуль это zero, а null это смысл этого нуля т.е. ничего.
0
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
29.08.2015, 01:13  [ТС]
Лучше скажите как указателю например "*p" присвоить некоторое количество памяти.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
29.08.2015, 02:34
Пришла в голову идея, может меня так поймут:

Представим что стрелка часов это указатель, числа на часах это адреса. Если вы хотите сказать что стрелка указывает на нулевой адрес (сейчас нуль часов) то по английски это будет zero hour. Если же вы говорите null hour то имеется ввиду никакой час (стрелка никуда не указывает, либо указывает куда то не туда, это детали реализации, главное что никакой полезной информации там нет).

итал. nulla «ничто», от лат. nullus «никакой, ни один; несуществующий; пустой».
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.08.2015, 12:11
AncientPenguin, интересная теория, но, увы, не верная. В указателе не может содержаться ничего кроме числа (адреса). На практике во всех компиляторах null - это 0. Других значений я не видел. Так исторически сложилось и современные ОС (хотя и не все) специально запрещают обращение к нулевой странице (компилятор тут вообще не при делах). А вот если отойти от прикладного программирования, то тут все интереснее. Собственно обсуждалось уже выше, да и пример был. У тебя нету опыта низкоуровневых разработок, отсюда и ошибочные предположения про "пустоту" и прочий бред.

Добавлено через 4 минуты
Цитата Сообщение от Aqua77 Посмотреть сообщение
Лучше скажите как указателю например "*p" присвоить некоторое количество памяти.
https://www.google.ru/?gws_rd=... %2B%2B+new

Добавлено через 12 минут
Единственное, что я усвоил из этой темы, что строго по стандарту "null pointer value" не обязательно именно 0 (а может быть любое другое число). Отдельное спасибо Tulosba за адекватные комментарии.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
29.08.2015, 12:59
shmkv, если размышлять так то никаких указателей и адресов вообще нет, только электрические сигналы (условно 0 и 1), однако последовательность в 8 таких сигналов считают числом и работают с ним как с числом, но на уровне реальности это электрический сигнал. Потом число в переменной-указателе принимают за адрес.

Сделай еще один шаг наверх от ассемблера к С++, NULL на уровне ассемблера просто еще один адрес, но на уровне С++ это маркер обозначающий ничего. Может хоть так донесу мысль:

C++
1
2
enum ErrorCode { WARNING, ERROR, FATAL };
ErrorCode code = FATAL;
Что в переменной code, просто цифра или код ошибки?

Цитата Сообщение от shmkv Посмотреть сообщение
Единственное, что я усвоил из этой темы, что строго по стандарту "null pointer value" не обязательно именно 0 (а может быть любое другое число).
То что null может быть любым числом (адресом) не наводит на мысль что это все таки не адрес?

Я пытаюсь объяснить что это число обозначает ничего, а не то что в самой переменной вакуум. С точки зрения программирования в первую очередь главное смысловая нагрузка, а не то что там в реальности. На этом принципе весь С++ построен (и ассемблер тоже).
2
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.08.2015, 13:40
Цитата Сообщение от AncientPenguin Посмотреть сообщение
если размышлять так то никаких указателей и адресов вообще нет, только электрические сигналы (условно 0 и 1), однако последовательность в 8 таких сигналов считают числом и работают с ним как с числом, но на уровне реальности это электрический сигнал.
И что?
Цитата Сообщение от AncientPenguin Посмотреть сообщение
на уровне С++ это маркер обозначающий ничего
Надоело уже повторяться. Он обозначает невалидность указателя за исключением некоторых особых случаев (пусть формально и не соответствующих Стандарту).
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Что в переменной code, просто цифра или код ошибки?
Смотря в каком контексте рассматривать.
Цитата Сообщение от AncientPenguin Посмотреть сообщение
То что null может быть любым числом (адресом) не наводит на мысль что это все таки не адрес?
Нет.
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Я пытаюсь объяснить что это число обозначает ничего
Нет такого понятия.

Добавлено через 5 минут
Цитата Сообщение от AncientPenguin Посмотреть сообщение
С точки зрения программирования в первую очередь главное смысловая нагрузка
Согласен. В контексте malloc NULL - признак ошибки выделения памяти (невалидный адрес). Но есть и другие ситуации...
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
29.08.2015, 14:21
Цитата Сообщение от shmkv Посмотреть сообщение
Единственное, что я усвоил из этой темы, что строго по стандарту "null pointer value" не обязательно именно 0 (а может быть любое другое число).
Этот вопрос также освещен в C FAQ конференции comp.lang.c: http://c-faq.com/null/machexamp.html.
Дополнительно советую прочитать про это в стандарте (там довольно много интересного) лично. Не стоит бояться заглядывать в этот важный документ (2.13.7, 4.10, 5.2.10 и т.д.)
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
29.08.2015, 15:43
shmkv, ты мне так и не ответил что в переменной, от этого ответа зависит вся дальнейшая дискуссия.

C++
1
2
enum ErrorCode { WARNING, ERROR, FATAL };
ErrorCode code = FATAL;
Так что в переменной число или код ошибки? Если ты считаешь что в переменной просто число тогда да, null это указатель (валидный или невалидный не важно). Если же ты считаешь что в переменной код ошибки тогда null это пустота.

И кстати почему невалидный указатель назван пустота? Null это не английское слово обозначающее нуль, это термин на латыни который и переводится и обозначает ничего.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.08.2015, 15:46
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Так что в переменной число или код ошибки? Если ты считаешь что в переменной просто число тогда да, null это указатель (валидный или невалидный не важно). Если же ты считаешь что в переменной код ошибки тогда null это пустота.
Я не понимаю твоей логики, прости.

Добавлено через 42 секунды
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Null это не английское слово обозначающее нуль, это термин на латыни который и переводится и обозначает ничего.
Ну давай еще сюда лингвистику приплетем...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2015, 15:46

Вычислить адрес верхушки стека, адрес следующей команды, адрес переменной, адрес которой содержится в BX
Помогите решить следующие задачи: 1.Вычислить адрес верхушки стэка. 2.Вычислить адрес следующей выполняемой программы. 3. Вычислить...

Указатели - почему pNext работает как ссылка на следующий адрес?
struct Node { int value; struct Node* pNext; // ссылка на следующий адрес }; struct AddressInfo { char name; char...

Массивы и Указатели: распечатать таблицу,содержащую имя переменной,ее значение и адрес
Условие:Написать программу,которая создает несколько переменных целого и вещественного типа,для каждой переменной создает указатель,а затем...

хочу только адрес страници
Вот я замечал порой заходя на сайт что, где нормально пишешь название сайта скажем www.aaa.com то на некоторых сайтах когда заходишь то...

Частный адрес, динамический адрес, статический адрес - какой у меня?
Привет. Открываем рубрику глупых вопросов. Я сижу с компьютера который подключен к интернету по кабелю, кабель от компьютера идёт к...


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

Или воспользуйтесь поиском по форуму:
160
Закрытая тема Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru