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

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

25.08.2015, 23:39. Показов 13931. Ответов 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
Закрытая тема Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru