Это все конечно хорошо. И изучить стоит лишь потому, что ну вот такие уж конструкции в языке существуют...
Но намеренно самому такое написать. Да это ж взрыв мозга. Более вырвиглазные конструкции можно придумать разве что на перле или брэйнфаке.
P.S. На код-ревью нужно подавать 220В к сидушке тому кто такое написал.
Здравствуйте, trophim, Вы писали:
T>Это все конечно хорошо. И изучить стоит лишь потому, что ну вот такие уж конструкции в языке существуют... T>Но намеренно самому такое написать. Да это ж взрыв мозга. Более вырвиглазные конструкции можно придумать разве что на перле или брэйнфаке.
T>P.S. На код-ревью нужно подавать 220В к сидушке тому кто такое написал.
Сам я никогда записью
type (*p)[size]
не пользовался. Поэтому и не возникало вопросов.
А последние несколько лет вообще пользуюсь исключительно контейнерами STL, поэтому практически и забыл, чего не знал...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, vitabrevis, Вы писали:
BFE>>Лично мне не нравится то, что имя указателя при декларации находится внутри описания типа. V>а typedef не поможет?
Да, поможет спрятать проблему в сам typedef, но ведь иногда и typedef'ы приходится читать:
typedef boost::units::quantity<boost::units::si::scaled::millisecond_unit, int>(*Func)(ValidCameraIndexEnum eSide, int nImageWidthInPixels, int nImageHeightInPixels, boost::units::quantity<boost::units::si::frequency, float> fImagesPerSecond, bool bInterlaced, BitsPerColorComponentEnum eBitsPerColor, ColorConversionEnumEx eColorEncodingMethod);
I>Наверное (s) после Pointer здесь все-таки лишнее. Имеется ввиду видимо следующее:
I>
I>Pointer to object(s) of type Array of 10 unsigned char
I>
(s) я добавил, когда нужно было составить 'Array of Pointer(s)'. Лучше ничего не придумалось. Можно, конечно, добавить отдельную специализацию для массива указателей, но из-за такой мелочи вносить избыточность и портить красоту натюрморта как-то не хотелось.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, trophim, Вы писали:
T>Это все конечно хорошо. И изучить стоит лишь потому, что ну вот такие уж конструкции в языке существуют... T>Но намеренно самому такое написать. Да это ж взрыв мозга. Более вырвиглазные конструкции можно придумать разве что на перле или брэйнфаке.
T>P.S. На код-ревью нужно подавать 220В к сидушке тому кто такое написал.
Без этих трудностей, которые мы (люди) сами себе создаем, а потом совершенствуем свое мастерство, преодолевая их, жизнь была бы скучна и бесцветна. И моего чудного упражнения не было бы.
--
Не можешь достичь желаемого — пожелай достигнутого.
*LVV>const int N = 10; LVV>int M = 5; LVV>unsigned char (*p)[N] = new unsigned char[M][N]; LVV>
Тип p — указатель на массив размерностью N, состоящий из беззнаковых char, если ты об этом.
LVV>Далее: тип выражения при разыменовании *p будет массив из 5 элементов. Или как-то иначе?
Да.
всегда же было если int (*p)[2] то *p == указатель на первый элемент массива
тоесть если имеем указатель на массив то после разыменования имеем указатель на первый элемент
ну вот пример
int (*p)[2];
*(*(p + i) + j)
вот тут видно как указатель на массив превращается в указатель на первый элемент
а потом уж после второго разымнования в элемент
с чего вы взяли что typeof(*p) == массив а не указатель ?
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>*LVV>const int N = 10; LVV>>int M = 5; LVV>>unsigned char (*p)[N] = new unsigned char[M][N]; LVV>>
J>Тип p — указатель на массив размерностью N, состоящий из беззнаковых char, если ты об этом.
LVV>>Далее: тип выражения при разыменовании *p будет массив из 5 элементов. Или как-то иначе? J>Да.
Только массив не из 5-ти элементов, а из 10-ти
--
Не можешь достичь желаемого — пожелай достигнутого.