Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
#1

Преобразование в указатель на указатель на константу - C++

22.08.2012, 03:21. Просмотров 1049. Ответов 9
Метки нет (Все метки)

В упор не могу понять правила которые приводит Дьюхерст для преобразований "многоуровневых" указателей.

(Дьюхерст "Скользкие места С++" Совет 32 "Преобразование в указатель на указатель на константу" стр 79)

Преобразование в указатель на указатель на константу
Преобразование в указатель на указатель на константу

Пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int ***const cnnn= 0;
 
int **const* ncnn= 0;
 
int *const** nncn= 0;
 
int *const*const* nccn= 0;
 
const int *** nnnc= 0;
 
ncnn = cnnn;
 
nncn = cnnn; /* Ошибка ! */
 
nccn = cnnn;
 
nnnc = cnnn; /* Ошибка ! */
Есть литература на эту тему с более лучшим качеством изложения ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2012, 03:21     Преобразование в указатель на указатель на константу
Посмотрите здесь:

C++ Задача на указатели.Указатель на указатель.
Сделать указатель на указатель NULL C++
C++ Оператор if и указатель на цикл (ввод цифр и преобразование в буквы)
Указатель на строковую константу C++
Указатель на строковую константу. В чем отличие двух приведенных примеров C++
Зачем использовать Указатель на указатель? C++
C++ Преобразование из целого типа в указатель через reinterpret_cast
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
22.08.2012, 09:54
  #2

Не по теме:

снимаю шляпу - таких фокусов с const я никогда в жизни не видел. максимум - const перед типом или const перед именем. может такие фокусы и не нужны)? даже не знаю, что посоветовать в плане осознания написанного. слежу с интересом.

Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
22.08.2012, 17:09  [ТС]     Преобразование в указатель на указатель на константу #3
Цитата Сообщение от vxg Посмотреть сообщение
может такие фокусы и не нужны)?
Дальше в книге Дьюхерст пишит что необходимость применения возникает довольно часто и приводит пример
nexen
22.08.2012, 17:27
  #4

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение

Дальше в книге Дьюхерст пишит что необходимость применения возникает довольно часто и приводит пример
Можешь выложить примеры? Я бы на это посмотрел :>

ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
22.08.2012, 18:24     Преобразование в указатель на указатель на константу #5
Avazart, Да нет как раз требуется это редко, т.к. в основном пользуются векторами/строками. А если нужна быстрота - то это повод смотреть в сторону Си
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
22.08.2012, 18:26  [ТС]     Преобразование в указатель на указатель на константу #6
Avazart, Да нет как раз требуется это редко, т.к. в основном пользуются векторами/строками. А если нужна быстрота - то это повод смотреть в сторону Си
Ну так ничто не мешает совмещать код... в этом и плюсы...

И все же как объяснить подобные преобразования ?
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
22.08.2012, 18:40     Преобразование в указатель на указатель на константу #7
Avazart,

Не по теме:

это черная магия. Просто прийми это как есть)

ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
22.08.2012, 18:44     Преобразование в указатель на указатель на константу #8
Avazart, Так как написано в книге. Ни у Саттера, ни у Страуструпа, ни у Александреску, ни у Мейерса я таких примеров не встречал. Потому либо лезть копаться в стандарте, либо принять как написано здесь
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
22.08.2012, 18:46  [ТС]     Преобразование в указатель на указатель на константу #9
Да наверное придется лезть в стандарт...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2012, 07:20     Преобразование в указатель на указатель на константу
Еще ссылки по теме:

C++ Указатель на строковую константу
C++ Преобразование указателя одного типа в указатель другого
Константный указатель на константу меняет значение C++
Преобразование имени массива в указатель C++
ссылка на указатель на константу. Не могу врубиться C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
24.08.2012, 07:20  [ТС]     Преобразование в указатель на указатель на константу #10
В стандарте таже фигня:
Цитата Сообщение от Standard for Programming Language C++, 4.4 Qualification conversions
where each cvi,j is const, volatile, const volatile, or nothing. The n-tuple of cv-qualifiers after the
first in a pointer type, e.g., cv1,1, cv1,2, · · · , cv1,n in the pointer type T1, is called the cv-qualification
signature of the pointer type. An expression of type T1 can be converted to type T2 if and only if the
following conditions are satisfied:

— the pointer types are similar.
— for every j > 0, if const is in cv1,j then const is in cv2,j , and similarly for volatile.
— if the cv1,j and cv2,j are different, then const is in every cv2,k for 0 < k < j.
Условие
— if the cv1,j and cv2,j are different, then const is in every cv2,k for 0 < k < j.
Вообще не понятно....
Yandex
Объявления
24.08.2012, 07:20     Преобразование в указатель на указатель на константу
Ответ Создать тему
Опции темы

Текущее время: 13:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru