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

Нюансы синтаксиса: что означает указатель на указатель?

09.09.2018, 19:51. Показов 1271. Ответов 5

Студворк — интернет-сервис помощи студентам
//Как работает 6 строчка?
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std; 
int main( void ) {
   double **p = 0;
   *( *( p = new double* ) = new double ) = 2;
   cout << **p << endl;
   delete *p;
   delete p;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2018, 19:51
Ответы с готовыми решениями:

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

Нюансы синтаксиса: указатель на пользовательский тип
скажите пожалуйста уважаемые форумчане , какая разница будет в этом? #include &lt;iostream&gt; class foo{ public: int a; ...

Нюансы синтаксиса: что означает запись (1<<20) ?
Добрый день! Подскажите, пожалуйста. Нашел программу, в ней есть такая строка: #define DICT_SIZE (1 &lt;&lt; 20) Что...

5
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
09.09.2018, 19:58
Цитата Сообщение от qymb1 Посмотреть сообщение
//Как работает 6 строчка?
*(*p) в скобках разыменовывается указатель в котором находиться указатель, он тоже разыменовывается, тем самым получаем значение 2 и отправляем его в стандартный поток вывода, на консоль
0
4 / 4 / 0
Регистрация: 09.09.2018
Сообщений: 19
09.09.2018, 21:00  [ТС]
Oops..Я хотел спросить как работает 5 строчка) Извините меня)
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.09.2018, 06:00
Цитата Сообщение от qymb1 Посмотреть сообщение
*( *( p = new double* ) = new double ) = 2;
то же самое
C++
1
2
3
double** p = new double*();
*p = new double();
**p = 2; //
механизм указателей, это такой механизм работы с памятью (с кучей) что в двух словах не объяснить, на СО есть пара толковых объяснений. тут главное понять принцип как он работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
std::string s = "HelloWorld!";     // Добавляем уровень косвенности
std::string* p1 = &s;
std::string** p2 = &p1;              
std::string*** p3 = &p2;
std::string**** p4 = &p3;
std::string***** p5 = &p4;        
 
std::string**** p6 = *p5;          // Снимаем уровень косвенности
std::string*** p7 = *p6;
std::string** p8 = *p7;
std::string* p9 = *p8;
std::string s2 = *p9;
 
std::string s3 = *****p5;
0
4 / 4 / 0
Регистрация: 09.09.2018
Сообщений: 19
10.09.2018, 18:23  [ТС]
А можете сказать, где прочитать про указатель на указатель новичку (и вообще разобраться в указателях) ? Понять сам механизм работы. Просто не знаю, что такое СО.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.09.2018, 18:40
Лучший ответ Сообщение было отмечено qymb1 как решение

Решение

Цитата Сообщение от qymb1 Посмотреть сообщение
Просто не знаю, что такое СО.
Добавлено через 6 минут
qymb1, начнем с того что double* это тип указателя на double, а double** это тип указателя на double*.

Добавлено через 4 минуты
конструкция
C++
1
new double*();
возвращает адрес на тип double*, мы можем хранить этот адрес только в переменной типа double**

конструкция
C++
1
new double();
возвращает адрес на тип double, мы можем хранить этот адрес только в переменной типа double*

Добавлено через 2 минуты
и так до бесконечности ...

конструкция
C++
1
new double**();
возвращает адрес на тип double**, мы можем хранить этот адрес только в переменной типа double***
и тд и тд

Добавлено через 31 секунду
вот он весь механизм

Добавлено через 1 минуту
qymb1, что бы добраться потом до данных нужно делать все в обратном порядке я уже писал об этом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
std::string s = "HelloWorld!";     // Добавляем уровень косвенности
std::string* p1 = &s;
std::string** p2 = &p1;              
std::string*** p3 = &p2;
std::string**** p4 = &p3;
std::string***** p5 = &p4;        
 
std::string**** p6 = *p5;          // Снимаем уровень косвенности
std::string*** p7 = *p6;
std::string** p8 = *p7;
std::string* p9 = *p8;
std::string s2 = *p9;
 
std::string s3 = *****p5;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.09.2018, 18:40
Помогаю со студенческими работами здесь

Нюансы синтаксиса: что означает запись for ( ; ; ) ?
Встретила в программе такую строку: for ( ; ; ) { // some code } Кто может объяснить по какому принципу она работает,...

Нюансы синтаксиса: что означает запись sum += x; ?
что это за сокращение?

Нюансы синтаксиса: что означает символ -> (указатели)
ребят подскажите что означает такой символ: -&gt; вот пример кода: pq-&gt;arr

Нюансы синтаксиса: что означает данная запись
Всем привет! VS2010, консольный проект C++. По ошибке написал: int b = (5, 4, 11, 56, 18, 0); IntSet is2(n, (5, 4, 11, 56, 18,...

Нюансы синтаксиса: что означает void, while и switch?
1)void answer Yes() 2)while (label) 3)switch (1 + rand() % 4) Что означают эти команды пожалуйста объясните.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru