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

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

25.08.2015, 23:39. Показов 13894. Ответов 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
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
27.08.2015, 23:11
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ct0r Посмотреть сообщение
Еще раз, указатель, в котором 0 - это не обязательно нулевой адрес.
А что это? И как я могу это повторить?
Цитата Сообщение от ct0r Посмотреть сообщение
А то, что в досе это 0 и по нему можно спокойно обращаться - это непереносимая особенность доса, причем тут С++?
Мда. Скажи честно: ты троллишь? Видишь ли чего, если бы мы говорили в контексте malloc, то возврат null - признак ошибки выделения памяти. Но из этого никак не следует, что нельзя обращаться по нулевому указателю.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.08.2015, 23:15
Цитата Сообщение от shmkv Посмотреть сообщение
Но из этого никак не следует, что нельзя обращаться по нулевому указателю.
об это прямо говорит стандарт.
искать лень, ибо баян.

разыменовывание нулевого указателя - есть UB.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.08.2015, 23:22
Цитата Сообщение от hoggy Посмотреть сообщение
не важно как.
важно, что бы это был с++.
Объект в виде char/short/int/long подойдёт?
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
27.08.2015, 23:36
Цитата Сообщение от AncientPenguin Посмотреть сообщение
А теперь вызови метод этой машинки по этому указателю в этом методе должно выводиться что-то доказывающее что это точно конкретная машина, т.е.
ты думаешь этого нельзя сделать?

Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
об это прямо говорит стандарт.
искать лень, ибо баян.
мне бы интересно почитать.

Добавлено через 9 минут
Вообще захардкорженное обращение к памяти (и к нулевому адресу в частности) является обычным делом при программировании таких вещей как МК. Все зависит только от конкретной архитектуры.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.08.2015, 23:52
В архиве пример, где я легко пишу и читаю данные по нулевому указателю.

null_pointer_test.7z
Скомпилировать его можно вручную через командную строку используя компилятор MinGW.
2
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.08.2015, 00:07
Цитата Сообщение от shmkv Посмотреть сообщение
мне бы интересно почитать.

Не по теме:

я обычно так провоцирую местных буквоедов,

не сработало.

0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.08.2015, 00:14
Цитата Сообщение от shmkv Посмотреть сообщение
мне бы интересно почитать.
8.3.2/5 ...in particular, a null reference cannot exist in a well-defined program, because the only
way to create such a reference would be to bind it to the “object” obtained by dereferencing a null pointer,
which causes undefined behavior.
Цитата Сообщение от shmkv Посмотреть сообщение
захардкорженное обращение к памяти (и к нулевому адресу в частности) является обычным делом
В общем случае, имхо, есть разница:
C++
1
2
void* ptr1 = reinterpret_cast<void*>(0); // Указатель на нулевой адрес в конкретной архитектуре
void* ptr2 = 0; // null pointer value в любой архитектуре (т.е. указатель, который гарантированно не может указывать на любой объект программы)
4.10/1 A null pointer constant is an integral constant expression (5.19) prvalue of integer type that evaluates to
zero
or a prvalue of type std::nullptr_t.
103) As specified in 4.10, converting an integral constant expression whose value is 0 to a pointer type results in a null pointer value.

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
не сработало.
сработало:)

1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.08.2015, 00:25
Цитата Сообщение от Tulosba Посмотреть сообщение
сработало
Не известно откуда вы это вырвали.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.08.2015, 00:28
Цитата Сообщение от castaway Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
unsigned short * p = 0;
// пишу
 *p = 0x1234; // так
 p[0] = 0x1234; // или так
// читаю
 unsigned short v;
 v = *p; // так
 v = p[0]; // или так
О, Боже! И что, у вас это работает?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
28.08.2015, 00:30
Цитата Сообщение от Mr.X Посмотреть сообщение
О, Боже! И что, у вас это работает?
Да. У меня это работает.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.08.2015, 00:34
Цитата Сообщение от castaway Посмотреть сообщение
Да. У меня это работает.
Ну дак косой компилятор, вырвавшийся из-под власти Страуструпа на свободу. И что вы хотели продемонстрировать этим примером?
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.08.2015, 00:40
Цитата Сообщение от Tulosba Посмотреть сообщение
8.3.2/5
Ну судя по содержимому тут речь о невозможности существования ссылок не привязанных к объекту и UB по нулевому указателю именно в этом контексте.

Добавлено через 3 минуты
Вообще, допустим в стандарте явно прописано, что разыменование нулевого указателя - UB. Тогда получается этот код может вывести любое число? Или как тогда трактовать UB?
C++
1
2
int *p = 0;
cout << (int)p;
Добавлено через 54 секунды
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну дак косой компилятор
А какой компилятор не косой?

Добавлено через 14 секунд
И причем тут вообще компилятор?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
28.08.2015, 00:42
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну дак косой компилятор, вырвавшийся из-под власти Страуструпа на свободу.
Само собой. Специально взял самый плохой компилятор чтобы всех обмануть.

Цитата Сообщение от Mr.X Посмотреть сообщение
И что вы хотели продемонстрировать этим примером?
Я не хотел, а доказал, что нулевой указатель содержит именно адрес.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
28.08.2015, 00:45
Цитата Сообщение от castaway Посмотреть сообщение
Я не хотел, а доказал, что нулевой указатель содержит именно адрес.
Как мне кажется, компилятор просто вырезал всё это. Листинг асм можно?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.08.2015, 00:50
Цитата Сообщение от shmkv Посмотреть сообщение
А какой компилятор не косой?
Тот, который соответствует стандарту.
Цитата Сообщение от Mr.X Посмотреть сообщение
Страуструп черным по белому пишет, что гарантируется, что не существует объектов с нулевым адресом.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
28.08.2015, 00:51
Цитата Сообщение от Croessmah Посмотреть сообщение
как мне кажется, компилятор просто вырезал всё это. Листинг асм можно?
Ну ты хоть не позорься По твоему компилятор вырезал обращение к нулевому указателю, но сам вывел информацию на экран?) Листинг сейчас приложу. (специально компилировал с -O0)

Добавлено через 1 минуту
Mr.X, стандарт не идеален, как и человек, который его придумывает. Это так, для размышлений...
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
28.08.2015, 00:52
Цитата Сообщение от castaway Посмотреть сообщение
По твоему компилятор вырезал обращение к нулевому указателю, но сам вывел информацию на экран?
Я раньше так делал, у меня вырезал, т.к. конечное значение *v известно еще при компиляции. Предлагаю поменять на
C++
1
std::cin >> *p ;
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.08.2015, 00:53
Цитата Сообщение от Mr.X Посмотреть сообщение
Страуструп черным по белому пишет, что гарантируется, что не существует объектов с нулевым адресом.
Страуструп вроде как не создавал процессорные архитектуры (это об общем случае). Но в некотором контексте эта фраза может быть и верна, мне просто лень искать оригинал.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
28.08.2015, 00:55
Цитата Сообщение от Croessmah Посмотреть сообщение
У меня вырезал, т.к. конечное значение *v известно еще при компиляции.
Что за значение *v? В моём примере такого нет.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
28.08.2015, 00:56
Цитата Сообщение от castaway Посмотреть сообщение
Что за значение *v?
Звезда здесь лишняя, забыл что v не указатель.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.08.2015, 00:56

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
100
Закрытая тема Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе. Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I Обработка содержит реквизиты: -. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности 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,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru