реклама на сайте
подробности

 
 
> Инициализация структуры
Jenya7
сообщение Jul 20 2018, 12:25
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Хотел немного схитрить, ну так, с краешку. Создал структуру
Код
typedef struct
{
    uint32_t menu_id;
    char *menu_text;
}MENU_ITEM;

typedef struct
{
    MENU_ITEM main_menu;
    MENU_ITEM *submenu;
}MENU;
Инициализирую
Код
MENU menu[] =
{
    {  { 1, "MENU1"},
       { {0, "SUBMENU1" }, { 1, "SUBMENU2" }, { 2, "SUBMENU3" } }
    }
};
Компилятор ругается на уровне ворнинга
Цитата
(near initialization for 'menu[1].submenu') [enabled by default]
braces around scalar initializer [enabled by default]
excess elements in scalar initializer [enabled by default]
initialization makes pointer from integer without a cast [enabled by default]

причем если убираю скобки ругается на уровне ошибки.

Не хочет видеть как указатель на массив. Все так плохо или можно что то сделать?

Сообщение отредактировал Jenya7 - Jul 20 2018, 12:25
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Jul 28 2018, 15:36
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



+5 копеек:
индексация указателя не контролирует индекс, а индексация (имени) массива будет, при возможности, проверять индекс на допустимый диапазон.

ЗЫ
Кстати, index[array] какой-то обкуренный товарищ придумал. Любопытно было бы узнать исторические предпосылки или адекватную логическую аргументацию этого кошмара. (а не тупой отсыл к тексту стандарта, в котором не обязана быть аргументация)

Хотелось бы удостовериться, что все интуитивно непонятные места в Си существуют для обхода (старых и новых) граблей или для увеличения концентрации смысла на еденицу текста. Но с минимизацией ущерба общекомпьютерным категориям и терминам, которыми мыслят и на которых общаются разработчики, например, широкого профиля.

Сообщение отредактировал GetSmart - Jul 28 2018, 17:22


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
aiwa
сообщение Jul 29 2018, 00:25
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(GetSmart @ Jul 28 2018, 18:36) *
Кстати, index[array] какой-то обкуренный товарищ придумал. Любопытно было бы узнать исторические предпосылки или адекватную логическую аргументацию этого кошмара. (а не тупой отсыл к тексту стандарта, в котором не обязана быть аргументация)

Не обкуренный товарищ, а группа обкуренных товарищей (WG14). "6.5.2.1 Array subscripting".
Из второго пункта: "The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2)))."
И далее объяснение - потому что "E1 is an array object (equivalently, a pointer to the initial element of an array object)".

Для примера с sizeof: "6.5.3.4 The sizeof and _Alignof operators", разъясняет, что от sizeof(E1) не стоит ожидать физического размера указателя ибо
sizeof "yields the size of the adjusted (pointer) type".
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 29 2018, 05:43
Сообщение #4


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aiwa @ Jul 29 2018, 04:25) *
Из второго пункта: "The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2)))."

Явно не обозначена аргументация, зачем превращать (классическую) индексацию массива в выражение со сложением. И чем не понравился вариант, когда два (три) оператора (+/-, []) могут быть применимы к массиву. Не обозначены веские причины для того, чтобы массив стал исключением из общих правил нисходящего перемещения по агрегатным типам, когда в тексте левая часть выражения указывает на более массивный агрегатный тип. При этом массивный агр. тип является источником имён и прочей инфы для нисхождения. Для массива это правило интуитивно оптимально при обращениях к многомерным массивам. Здесь же "E1[E2] is identical to (*((E1)+(E2)))" контроль диапазонов многомерия либо невозможен, либо возможен только контроль суммарного размера массива. Плюс, все операторы ".", "->" являются ассиметричными к операндам, аналогично "[]" в большинстве ЯП, изучаемых в образовательных учреждениях. Это правило делает и работу компилятора и читабельность текста проще.

С таким стандартом руки чешутся писать E1[E2]E3[E4] и прочую ерунду. Опять же, ++E1[E2] , где E2 - массив, E1 - integer lvalue, - выносит мозг конкретно. Хочется инкрементнуть элемент массива, но читается по естественным правилам это как увеличение индекса. Плюс: E1++[E2]++. Если ещё покопать, то можно мумию Тутанхамона выкопать.

Сообщение отредактировал GetSmart - Jul 29 2018, 20:30


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jul 29 2018, 07:14
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(GetSmart @ Jul 29 2018, 08:43) *
Плюс, все операторы ".", "->" являются ассиметричными к операндам, аналогично "[]" в большинстве ЯП, изучаемых в образовательных учреждениях. Это правило делает и работу компилятора и читабельность текста проще.
Когда содавался язык Си, никаких
Цитата
ЯП, изучаемых в образовательных учреждениях
не было.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2018, 02:41
Сообщение #6


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(andrew_b @ Jul 29 2018, 11:14) *
Когда содавался язык Си, никаких {ЯП, изучаемых в образовательных учреждениях} не было.

Да, но тогда переформулируя, в большинстве ЯП высокого уровня того времени.

----------------
Как сказал один мой необкуренный коллега: Что-то у вас тут недоработано ©

Ещё, надеюсь, в стандарте кто-нибудь догадался однозначно указать, что в разделе кода точка с запятой после закрытия непустого блока (}) выражением не считается. (из-за которого предыдущие IF потеряют возможность иметь ELSE)

Upd. И это, разумеется, не касается блока инициализатора. Ещё лучше так: ... указать, что точка с запятой, интерпретируемая первым оператором после закрытия непустого блока кода (закр. фиг. скобки), - выражением не считается.

Отпуск на носу. Отложу раскопки на потом.

Сообщение отредактировал GetSmart - Aug 2 2018, 13:32


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2018, 12:04
Сообщение #7


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Там немного обновил.

Отвечу так: одной из важнейших целей правил является компактность и ясность программы. Если это требует маленького исключения/особенности, то ничего плохого в этом нет. Которые там и так есть. Это точно менее кошмарно, чем index[array] и мутный do {...} while (0) в макросе. Кроме того, предельная простота совсем не гарантирует однозначности (толкования).


Цитата(aiwa @ Jul 29 2018, 12:38) *
По сути "E1[E2] is identical to (*((E1)+(E2)))" - это лишь выражение идеи. Для полной идентичности целое E2 должно быть умножено на типоразмер E1.
Идея состоит в том, что имя массива страдает дуализмом: оно указывает на первый элемент массива но не является указателем в нормативном смысле.
Отсюда естественно вытекает определение многомерных массивов: показывает на элемент, который является массив меньшей размерности.
Поэтому контроль диапазонов вполне возможен и, в принципе, легко реализуем, но, к всеобщему счастью, априори не предусмотрен в С.

Подскажите тогда, какой тип будут иметь вполне корректные выражения: (при E2=array, E1=index, для одномерного и многомерного массивов)
1: ((E1)+(E2))
2: ((E1)+(E2)+5)
3: ((E1)+5+(E2))
И, если можете, дайте определение/цитату или ссыль на упомянутый термин <типоразмер E1> в тексте <целое E2 должно быть умножено на типоразмер E1>. Это размер элемента ниже по иерархии от имени или размер элемента "на самом дне массива"? Или даже размер целого массива, на который указывает имя? (<типоразмер short> я буквально понимаю как 2 байта {например в Keil for ARMv4..ARMv7}. Типоразмер E5, где E5=структура, я склонен толковать как размер всей структуры, и по этой причине типоразмер E1 (ака массива) - как всего массива целиком. Для версии <имя массива в какой-то мере адрес> считать типоразмером E1 размер адреса - в обсуждаемом контексте вообще маловероятно).

Сообщение отредактировал GetSmart - Aug 2 2018, 14:03


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
aiwa
сообщение Aug 2 2018, 14:00
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(GetSmart @ Aug 2 2018, 15:04) *
Подскажите тогда, какой тип будут иметь вполне корректные выражения: (при E2=array, E1=index, для одномерного и многомерного массивов)
1: ((E1)+(E2))
2: ((E1)+(E2)+5)
3: ((E1)+5+(E2))


1. указатель на E1-й элемент массива E2.
2. и 3. указатель на (E1+5)-й элемент массива E2.

В случае многомерности E2 элементом будет выступать массив размерности меньшей на единицу, чем E2 .

Когда я говорил про типоразмеры я имел ввиду упомянутые выше ассемблерные команды.
Компилятор С сложение в этих выражениях понимает в смысле арифметики указателей и все получается корректным.



Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 3 2018, 17:45
Сообщение #9


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата
Ну да, отвлекся и написал для массива 4x4, правильно было бы а[0][24] и a[24][0]. Но не важно, - главное, что коммутативность арифметики с указателем приводит к такому побочному эффекту.

Это по шагам можете объяснить?
Мне понятны варианты когда а[0][24] идентичен a[1][19] и идентичен a[2][14] и т.д. Если не обращать внимание на варнинги компилятора. Но a[24][0] каким образом-то?

Цитата(aiwa @ Aug 2 2018, 18:00) *
2. и 3. указатель на (E1+5)-й элемент массива E2.

index1[index2][array_name] и index1[index2][index3][array_name] тоже разрешены? Если да, исходя из каких формулировок?

Цитата(aiwa @ Aug 3 2018, 19:14) *
Нет. Оператор [] значится как postfix-operator и определен для "array subscripting". Это признак массива.

То есть разрешение применения [] к любому указателю на непустой тип даёт именно первый абзац главы <6.5.2.1 Array subscripting> ? object type определён как любой, за исключением void? В стандарте есть суммарный раздел об авто-преобразованиях? Или надо шерстить весь стандарт чтобы откопать однозначность?

Видимо отсюда и растут ноги у названия "подписка". Страннейшего, для необкуренных мозгов. Обозвали бы "индексация" и уловка с авто-подменой была бы недоступна.

В посте 40 я ошибся, в цитате:
<И уже когда к этому аргументу будет приплюсовываться число 5, то оно, проще говоря, должно быть (наиболее вероятно по вышеобозначенной инфе) индексом следующей (второй) размерности.>
т.к. на следующую размерность не перейти, без применения оператора * в вариантах со сложением.


Цитата(aiwa)
"Почти всегда" следует потому в случае оператора sizeof, согласно которому имя_массива преобразуется в тип "массив заданной размерности",
в остальных случаях имя_массива преобразуется в &имя_массива[0].

Ну бред же. Для компилятора имя массива - это lvalue (кратко - объект в памяти). К нему можно применить амперсанд. &имя_массива[0] - это rvalue, к нему (здесь будет второй раз) амперсанд не применим. И для (простейше определённого) многомерного массива array_name[0] есть тоже lvalue. А, согласно этой цитаты, выражение &(array_name[0]) давало бы ошибку. Т.к. выражение в скобках, являющееся массивом авто-преобразовывалось бы в указатель. Хотя, корректней писать в <rvalue-указатель>. Всё это потверждает, что и rvalue с типом указатель на массив и lvalue с типом массив существуют без всякого sizeof, в них определена характеристика размера (для размерных), компиляторы поступают вполне разумно её проверяя на этапе компиляции, а что мешает копировать массивы выражениями вроде a=b - непонятно.

В языке должна быть ясность очерёдности исполнения авто-преобразований и операторов. Например: авто-преобразования применяются компилятором в самый последний момент исполнения операторов. И не должны менять приоритеты операторов при определении очерёдности их исполнения. Хотя, с таким неполным стандартом, если по нему ясность поведения будет не определена, то, наверное, судить придётся по каким-то ещё документам, например от выдумщика языка. А то появится несогласующийся с ранее написанными правилами футбол между операторами, операндами и авто-преобразованиями. (в этой ветке я ранее писал аргументов, но терминологически точнее, видимо, операндов для операторов и аргументов/параметров для функций)

Пытаясь как-то оправдать логику выдумщика и потом стандарта, когда на начальном этапе массив (array object по терминологии главы 6.5.2.1) казался избыточным и работу с массивами НАДО БЫЛО организовывать через указатели и операторы +-, которым был непринципиален порядок разношёрстных операндов, мне самому любопытно, на какой развилке не туда свернули)))
Упд. Именно такая историческая цепь прослеживается при чтении стандарта, когда оператор [] определяется текстовым примером через ранее определённые выражения.

Сообщение отредактировал GetSmart - Aug 4 2018, 07:40


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
aiwa
сообщение Aug 4 2018, 08:09
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(GetSmart @ Aug 3 2018, 20:45) *
index1[index2][array_name] и index1[index2][index3][array_name] тоже разрешены? Если да, исходя из каких формулировок?

Согласно 1-му пункту "подписки" это нелегально. Потому что в части выражения "index1[index2]..." один из этих индексов должен быть "pointer..."

Цитата(GetSmart @ Aug 3 2018, 20:45) *
Это по шагам можете объяснить?
Мне понятны варианты когда а[0][24] идентичен a[1][19] и идентичен a[2][14] и т.д. Если не обращать внимание на варнинги компилятора. Но a[24][0] каким образом-то?


Если по шагам, то этот пример я хотел привести намного раньше, когда Вы в ((E1)+(E2)+5) предлагали видеть в 5-ке индекс второй размерности.
Но я ошибочно начал тавтологию про типоразмеры. Но так как мне показалось, что мы толчем воду я его и привел с опозданием.

Вы правы, если продолжить ряд , то должны прийти к правильному решению похожему на a[24][-64].
Или сразу применить формулу, по которой добавляя число к первому индексу, мы должны отнимать это число, умноженное на 5 от второго. 5 и выступает в качестве типоразмера. Имхо, пример хорошо иллюстрирует рекурсивность правила для многомерных массивов.

Цитата(GetSmart @ Aug 3 2018, 20:45) *
То есть разрешение применения [] к любому указателю на непустой тип даёт именно первый абзац главы <6.5.2.1 Array subscripting> ? object type определён как юбой, за исключением void? В стандарте есть суммарный раздел об авто-преобразованиях? Или надо шерстить весь стандарт чтобы откопать однозначность?


Я не знаю стандарт достаточно хорошо. Помню в свое время всем отделом шерстили именно по указанной теме.
Но похоже, что действует принцип: "разрешено все, что не запрещено". Поэтому использование "подписки" для указателя вполне законно.

Только я не уверен, что термин в стандарте эквивалентен нашему пониманию "подписки".

Цитата(GetSmart @ Aug 3 2018, 20:45) *
Ну бред же. Для компилятора имя массива - это lvalue (кратко - объект в памяти). К нему можно применить амперсанд. &имя_массива[0] - это rvalue, к нему (здесь будет второй раз) амперсанд не применим. И для (простейше определённого) многомерного массива array_name[0] есть тоже lvalue.

Ну я условно, для краткости, чтобы не писать присутствующее в каждом посте "pointer to....".

Цитата(GetSmart @ Aug 3 2018, 20:45) *
Пытаясь как-то оправдать логику выдумщика и потом стандарта, когда на начальном этапе массив (array object по терминологии главы 6.5.2.1) казался избыточным и работу с массивами НАДО БЫЛО организовывать через указатели и операторы +-, которым был непринципиален порядок разношёрстных операндов, мне самому любопытно, на какой развилке не туда свернули)))


Но почему Вы считаете, что они свернули не туда? Они реализовали "ассемблерные возможности" на высоком уровне. И это есть хорошо.
И не дай бог они повернут туда: зачем нам третья java, или четвертый шарп?

Сообщение отредактировал aiwa - Aug 4 2018, 08:09
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 5 2018, 02:46
Сообщение #11


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aiwa @ Aug 4 2018, 12:09) *
Но почему Вы считаете, что они свернули не туда?

Как буд-то родился "кошмар на улице си" index[array]. Не прочитав всю кучу документов точно и не разберёшься.

Полноценный перевод этого мутного термина я не знаю. В каких-то словарях компьютерных терминов его кастрируют до <индексация>. Но в общеупотребительном смысле это слово более многогранное. Со смыслами <одобрить>, <согласиться>. Пока (если лучше версию не увижу), наверное буду считать в Си "признать массивом и индексировать". Но у буржуев есть какой-то схожий термин "superscripting" (superscription-надпись, в общеупотребительном аглицком), которе вместе (теоретически наверно) могут как-то обозначать вариации индексаций "вглубь" (для массивов) или наружу (для указателей). Но с такими тонкостями толкования я пока не пересекался.

Мутность такая же, как при переводе термина bitwise (complement), о котором когда-то спорили.

Сообщение отредактировал GetSmart - Aug 5 2018, 06:13


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Инициализация структуры   Jul 20 2018, 12:25
- - AlexRayne   Цитата(Jenya7 @ Jul 20 2018, 15:25) Не хо...   Jul 20 2018, 12:32
|- - Jenya7   Цитата(AlexRayne @ Jul 20 2018, 18:32) вс...   Jul 20 2018, 12:38
- - jcxz   Цитата(Jenya7 @ Jul 20 2018, 15:25) КодME...   Jul 20 2018, 13:57
- - Arlleex   Цитата(Jenya7 @ Jul 20 2018, 16:25) приче...   Jul 20 2018, 14:14
|- - Jenya7   Цитата(Arlleex @ Jul 20 2018, 20:14) Как ...   Jul 20 2018, 15:21
|- - Arlleex   Цитата(Jenya7 @ Jul 20 2018, 18:21) Но ин...   Jul 20 2018, 15:32
- - krux   динамика.... в меню.... наибессмысленнейшее решени...   Jul 20 2018, 17:00
- - Serge V Iz   Попробуйте встать на место компилятора. Инициализа...   Jul 20 2018, 18:03
- - x893   Всё будет во флэш, инициализация не нужна. Кодtype...   Jul 20 2018, 18:33
|- - Jenya7   Цитата(x893 @ Jul 21 2018, 00:33) Всё буд...   Jul 21 2018, 05:41
|- - jcxz   Цитата(Jenya7 @ Jul 21 2018, 08:41) какая...   Jul 21 2018, 09:05
|- - GetSmart   Цитата(Jenya7 @ Jul 21 2018, 09:41) какая...   Jul 23 2018, 23:32
|- - XVR   Цитата(Jenya7 @ Jul 21 2018, 08:41) какая...   Jul 24 2018, 07:49
|- - aiwa   Цитата(XVR @ Jul 24 2018, 10:49) Вопреки ...   Jul 26 2018, 09:16
|- - Arlleex   Это все известные вещи. Но, как было правильно отм...   Jul 26 2018, 10:35
|- - XVR   Цитата(aiwa @ Jul 26 2018, 12:16) Почему ...   Jul 26 2018, 12:32
|- - aiwa   Цитата(XVR @ Jul 26 2018, 15:32) Потому ч...   Jul 27 2018, 09:09
|- - XVR   Цитата(aiwa @ Jul 27 2018, 12:09) Никаког...   Jul 27 2018, 09:19
- - x893   Это надо у компилятора спрашивать.   Jul 21 2018, 06:08
- - XVR   Janya7 - вы случайно не состоите в родстве с Гасти...   Jul 23 2018, 12:33
- - GetSmart   Апосля подумалось. Идея смысла текста топикстартер...   Jul 26 2018, 01:22
|- - jcxz   Цитата(GetSmart @ Jul 26 2018, 04:22) В с...   Jul 26 2018, 08:21
|- - AlexRayne   Цитата(GetSmart @ Jul 26 2018, 04:22) А и...   Jul 26 2018, 09:16
|- - andrew_b   Цитата(AlexRayne @ Jul 26 2018, 12:16) в ...   Jul 26 2018, 10:54
|- - Arlleex   Цитата(AlexRayne @ Jul 26 2018, 13:16) в ...   Jul 26 2018, 11:03
|- - Arlleex   Цитата(GetSmart @ Jul 28 2018, 18:36) +5 ...   Jul 28 2018, 16:51
||- - GetSmart   Цитата(Arlleex @ Jul 28 2018, 20:51) А фо...   Jul 28 2018, 17:01
||- - andrew_b   Цитата(GetSmart @ Aug 2 2018, 05:41) Да, ...   Aug 2 2018, 04:51
|||- - GetSmart   Цитата(andrew_b @ Aug 2 2018, 08:51) А с ...   Aug 2 2018, 05:39
|||- - andrew_b   При чём тут непустой блок? Пустой оператор -- это ...   Aug 2 2018, 06:53
||- - GetSmart   Цитата(aiwa @ Aug 2 2018, 18:00) 1. указа...   Aug 2 2018, 14:17
|||- - aiwa   Цитата(GetSmart @ Aug 2 2018, 17:17) Мне ...   Aug 2 2018, 14:50
|||- - GetSmart   Цитата(aiwa @ Aug 2 2018, 18:50) Так все ...   Aug 2 2018, 15:00
|||- - aiwa   Цитата(GetSmart @ Aug 2 2018, 18:00) В вы...   Aug 2 2018, 15:53
|||- - GetSmart   Цитата(aiwa @ Aug 2 2018, 19:53) В станда...   Aug 2 2018, 16:49
|||- - andrew_b   Цитата(GetSmart @ Aug 2 2018, 19:49) Туда...   Aug 3 2018, 05:01
|||- - aiwa   Цитата(GetSmart @ Aug 2 2018, 19:49) Слож...   Aug 3 2018, 09:32
|||- - GetSmart   Цитата(aiwa @ Aug 3 2018, 13:32) Не путай...   Aug 3 2018, 12:09
|||- - aiwa   Цитата(GetSmart @ Aug 3 2018, 15:09) ...Е...   Aug 3 2018, 12:57
|||- - GetSmart   Цитата(aiwa @ Aug 3 2018, 16:57) В оригин...   Aug 3 2018, 13:58
|||- - aiwa   Цитата(GetSmart @ Aug 3 2018, 16:58) В ко...   Aug 3 2018, 14:31
|- - aiwa   Цитата(GetSmart @ Jul 29 2018, 08:43) Явн...   Jul 29 2018, 08:38
- - GetSmart   Я пару раз добавил в конец предыдущих постов одно ...   Aug 3 2018, 06:25
- - GetSmart   В стандарте есть явные определения логики интерпре...   Aug 3 2018, 14:54
|- - aiwa   Цитата(GetSmart @ Aug 3 2018, 17:54) В ст...   Aug 3 2018, 15:14
- - XVR   Пошла 4 страница трёпа вокруг массива/указателя......   Aug 4 2018, 16:33
- - aiwa   Цитата(GetSmart @ Aug 5 2018, 05:46) Но у...   Aug 8 2018, 20:53
|- - Herz   Цитата(aiwa @ Aug 8 2018, 23:53) Так букв...   Aug 9 2018, 08:20
- - Arlleex   Действительно какая-то пьянка вокруг массива и ука...   Aug 9 2018, 04:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 22:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01758 секунд с 7
ELECTRONIX ©2004-2016