Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/75: Рейтинг темы: голосов - 75, средняя оценка - 4.93
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133

Создание многомерных динамических массивов (динамических многомерных поинтеров)

08.05.2024, 21:48. Показов 27400. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет знатокам!
Решил написать небольшую функцию по созданию многомерных массивов. Возникло затруднение создать динамические многомерные поинтеры на массивы. Сейчас объясню что хочу.
входные/выходные данные: посылаем указатель на структуру в которой первым элементом будет поинтер(одномерный массив) с неизвестным количеством элементов. Количество элементов равно количеству измерений многомерного массива. Второй элемент возвращаемый поинтер на массив.
функция читает элементы массива; первый элемент количество измерений массива, последующие элементы количество элементов в каждом измерении.
Создать динамический массив не сложно, но возникает сложность когда количество измерений не определено.
Возможно ли это средствами С++, я только начал разбираться в С++ , по моему (возможно неумному) мнению не очень удобный язык особенно приведение типов это полный абзац. кучи хендлов и LP по сути являющимися одним и этим же DWORD - кто придумал это г.? После ассемблера это просто отрыв головы((
Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2024, 21:48
Ответы с готовыми решениями:

Указатели динамических массивов
Проблема такого характера: Мне нужно передать в функцию столбец матрицы(динамического двухмерного массива) без создание дополнительных...

Редактор многомерных динамических массивов
!!! Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. !!! Помогите мне пожалуйста...

Составление программ на обработку многомерных динамических массивов
Для каждой строки двумерного массива выяснить количество элементов, последняя цифра которых равна а.

49
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
15.05.2024, 08:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
компилятор не пропускает HWND, HFILE, HDLG... если заменить их обычным HANLDEом или DWORD.(
Это фича. Типизация помогает лучше контролировать программу.
Так что это очень удобно.
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
26.05.2024, 22:17  [ТС]
Дополнительная информация по поводу динамических многомерных массивов, может кому-то будет интересна, я просто сталкиваюсь с этим впервые.
При создании и инициализации многомерных динамических массивов, компилятор создает в памяти цепочку ссылок, как я описывал в одном из моих постов, которая обычно заканчивается DWORD 0xFDFDFDFD.
Мелькнула мысль можно ли по желанию в любой момент времени добавлять или удалять еще страницы, листы, главы уже после выполненной инициализации, после того, как вы уже попользовались массивом и вам вдруг не хватило ячеек? или наоборот часть страниц не нужна и вы их удаляете для очистки памяти. Оказалось можно.
т.е. если вы создали массив a[1][4][7], а вам нужно его изменить на a[2][5][9] - это можно сделать
правда структуру он будет иметь следующую - лист a[0] страница 4х7 лист a[1] страница 4х7 лист a[2] страница 5х9. Хотя листы a[0] и a[1] можно переформировать по своему желанию используя delete [].
Смущает следующее - после того как вы формируете новые цепочки указателей, она не заканчивает эти цепочки DWORD 0xFDFDFDFD как обычно, и при попытке удалить вновь созданную страницу, выдает исключение, но в принципе это можно решить искусственно записывая эти байты после последнего поинтера. Компилятор все это пропускает.
Вопрос только в следующем команда new определяет пересекающиеся области новых создаваемых страниц?, так как, как я уже писал нет финальной точки после поинтеров. По идее при назначении новых страниц или изменении старых при накладывании значений должно создаваться исключение, т.е. должна быть карта памяти для каждого конкретного массива.
Хотя скорее всего для new нет разницы массив это или структура или еще, что-то для нее четко должен быть описан sizeof []. Подпрограмма new должна быть объемная - чтобы все это отслеживать, хотя я не уверен, что она отслеживает - скорее всего выделяет память и забывает, о том что было. В общем надо поэкспериментировать с массивами, чтобы понять контролируется, после того как new отработала пространство памяти или нет?
Вот такое интересное, для меня как новичка С++ наблюдение, может кому-то еще тоже будет интересно.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
26.05.2024, 23:37
AAAAAlexeyyyyy, средствами стандартной библиотеки C++ можно делать так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    std::vector<std::vector<std::vector<int>>> v_3dim;
    v_3dim.resize(2);
    for(auto &v_2dim: v_3dim)
    {
        v_2dim.resize(5);
        for(auto &v_1dim: v_2dim)
            v_1dim.resize(9);
    }
    
    v_3dim[1][4][8] = 3;
 
    for(auto &v_2dim: v_3dim)
    {
        v_2dim.resize(8);
        for(auto &v_1dim: v_2dim)
            v_1dim.resize(10);
    }
    v_3dim[1][7][9] = 2;
Добавлено через 6 минут
Без всяких delete[], хотя ими тоже можно. А ещё, можно тот же принцип что у односвязного списка (когда следующий элемент ищется по указателю в предыдущем) расширить, чтобы указывался динамический массив элементов. Тогда можно делать массивы произвольного ранга и произвольных размерностей. Но работать обращения и перестройки размеров будут оочень медленно. Одномерный массив с адресацией доступа горааздо быстрее.
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
27.05.2024, 22:22  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
средствами стандартной библиотеки C++ можно делать так
Как я понимаю, new и delete - это встроенные операторы, не требующие подключения дополнительных библиотек, или я не прав? Зачем растить размер программы без необходимости?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12933 / 6801 / 1820
Регистрация: 18.10.2014
Сообщений: 17,214
28.05.2024, 01:19
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
Как я понимаю, new и delete - это встроенные операторы, не требующие подключения дополнительных библиотек, или я не прав?
Операторы new и delete опираются на функции operator new и operator delete, определенные в стандартной библиотеке. Да в любом случае: выделение динамической памяти - явно библиотечная функциональность.

Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
дополнительных библиотек
И о каких "дополнительных библиотеках" вообще идет речь? Стандартная библиотека - одна и она всегда подключена.
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
28.05.2024, 17:04  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
И о каких "дополнительных библиотеках" вообще идет речь? Стандартная библиотека - одна и она всегда подключена.
надо прочесть через два поста выше.
0
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
28.05.2024, 17:12
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
Компилятор все это пропускает.
В С++ есть диагностируемые ошибки и недеагностируемые. Т.е. вы вполне можете написать программу, которая формально некорректна, но компилятор это дело пропустит и возможно даже это будет работать (какое-то время).
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12933 / 6801 / 1820
Регистрация: 18.10.2014
Сообщений: 17,214
28.05.2024, 17:14
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
надо прочесть через два поста выше.
???

О чем речь?
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
28.05.2024, 21:50  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
В С++ есть диагностируемые ошибки и недеагностируемые
Я уже все это описал в постах выше, о том что скорее всего new не контролирует, что области им выделенные могут перекрыться из действий программиста.
Понятное дело, что компилятор это учитель русского языка и литературы.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
О чем речь?
о увеличение объема исходника за счет подключения библиотеки vector.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12933 / 6801 / 1820
Регистрация: 18.10.2014
Сообщений: 17,214
28.05.2024, 22:52
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
о увеличение объема исходника за счет подключения библиотеки vector.
Во-первых, не понимаю, что такое "увеличение объема исходника". "Исходника"? Почему вас вообще волнует объем исходника?

Во-вторых, не существует никакой "библиотеки vector". Класс std::vector входит в стандартную библиотеку С++. Во все ту же стандартную библиотеку С++, которую вы подключаете в любом случае.

В-третьих, std::vector - шаблонный класс. Никакого "увеличения объема" чего-либо он не вызывает, сверх того, что вам действительно нужно и что вы действительно используете.
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
28.05.2024, 23:27  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Во-первых, не понимаю, что такое "увеличение объема исходника". "Исходника"? Почему вас вообще волнует объем исходника?
Давайте будем считать, что мне так нравится.(стиль программирования)... но пожалуй соглашусь, что я имел в виду экзешник.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Класс std::vector входит в стандартную библиотеку С++
не знаю как у вас (может все в инклюде), но у меня в VS ,без #include "vector" ничего не работает
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Никакого "увеличения объема" чего-либо он не вызывает
проверил, объем экзешника с include vector и без оного отличается в большую сторону.
хотя может быть у Вас по другому( как и во втором случае).
Я только начал программировать в c++, и VS, может IDE неправильно настроено, хотя я постарался исключить все лишнее.
Здесь шел разговор, что new и delete операторы языка c++, "все остальное" надо подключать.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12933 / 6801 / 1820
Регистрация: 18.10.2014
Сообщений: 17,214
29.05.2024, 00:07
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
Давайте будем считать, что мне так нравится.(стиль программирования)... но пожалуй соглашусь, что я имел в виду экзешник.
Все равно не понимаю. Но если вы делаете что-то материальное в вашей программе, то эти действия транслируются в машинные инструкции, которые "увеличивают экзешник". Единственный способ не "увеличивать экзешник" - ничего не делать.

Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
не знаю как у вас (может все в инклюде), но у меня в VS ,без #include "vector" ничего не работает
Не понял. От необходимости включать правильные инклюды вас все равно никто не избавлял.

Но при чем здесь "инклюды" вообще? Инклюды - это не библиотеки. Вы выше вели речь о подключении некоей "библиотеки". При чем здесь библиотеки вообще? Где вы видели, чтобы #include выполняли "подключение библиотеки"? Где вы слышали про "библиотеку vector"? Нет такой библиотеки.

Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
проверил, объем экзешника с include vector и без оного отличается в большую сторону.
Проверить один и тот же код "с include vector и без оного" можно только в том случае, если этот код не использует vector вообще. Попробовал только что провести такой эксперимент с обычным std::cout << "hello world" << std::endl;. Размер экзешника от #include <vector> не меняется вообще никак.
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
29.05.2024, 00:56  [ТС]
TheCalligrapher Есть такое понятие как демагогия. Я признаю, что я просто не могу понять Вас, поэтому наверное не буду больше тратить Ваше и свое время. Как вы написали - Единственный способ не "увеличивать экзешник" - ничего не писать (не делать) - пожалуй воспользуюсь Вашим советом, по крайней мере в этом разговоре - слепого с глухим)), тем более, что никакой значимой информации по интересующей меня теме, Ваши речи к сожалению не несут. Хотя спасибо за попытку осветить эту бездну незнания. плюс, плюс к вашей Карме)).
0
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
29.05.2024, 04:46
AAAAAlexeyyyyy, если кратко: не задумывайся про объём экзешника и исходников. Надо - значит надо
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
29.05.2024, 08:48  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
AAAAAlexeyyyyy, если кратко: не задумывайся про объём экзешника и исходников. Надо - значит надо
Я думаю, что все так поступают. Вопрос в том, зачем его растить, если можно обойтись без этого. Из двух благ всегда выбираешь большее.
0
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
29.05.2024, 09:19
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
зачем его растить
чтобы добавлять функционал, не ?
0
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
29.05.2024, 09:56
AAAAAlexeyyyyy, а лично мне не понятно почему вы сторонитесь критически важных знаний, которые вам передавал в последних нескольких постах TheCalligrapher. Если вы изучаете C++ и собираетесь потом зарабатывать деньги, то все, что он сказал, необходимо знать и понимать. Так что никакой демагогии в этом нет. Очень странно, что вы с одной стороны говорите, что изучаете язык недавно, а с другой при малейшей попытке поправить ваши знания в лучшую сторону - встаёте в позу уязвлённого самолюбия. Это понятно, когда человек с 10 годами опыта так реагирует, т.к. замечания о том, что он чего-то не знает, влияют на его уже устоявшуюся самооценку - но вам-то что терять? Используйте любую возможность, чтобы учиться. В этой профессии вообще не бывает «неважных знаний».
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
29.05.2024, 10:39  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
встаёте в позу уязвлённого самолюбия.
Спасибо больше не буду вставать буквой зю))
А как вы увидели через компьютер, у меня камеры нет на ноутбуке, что я в определенной позе?
Цитата Сообщение от DrOffset Посмотреть сообщение
не бывает «неважных знаний»
Как я убедился несколькими постами выше бывают))
Цитата Сообщение от DrOffset Посмотреть сообщение
при малейшей попытке поправить ваши знания в лучшую сторону
Я не видел здесь попытки поправить знания, я видел здесь попытки путем демагогии продемонстрировать никчемность Ваших знаний((
Но может быть я не достиг еще просветления и не понимаю путей айтишного мироощущения)), но прочитав вышесказанное думаю, что ну его на фиг)). Может лет через 10 как вы написали на меня сойдет благодать и я хоть чуть-чуть буду соответствовать вашим богоподобным требованиям, пока приходится только соскребать мусор, и фильтровать из этого, хоть что-нибудь, что может принести реальную пользу.
А вообще, если без сарказма, то как я писал - я не получил конкретный ответ на конкретный вопрос - а все остальное это только ваши умозаключения основанные на Вашем, мне кажется измененном, мироощущении, но я могу ошибаться.
Если можно не плодите, если не по сути вопроса, бессмысленные посты, в попытке показать, что вы кого-то пытаетесь научить, а все вокруг обидчивые дураки. Если есть по сути заданного в топике вопроса пишите, если нет, то я думаю - это интересно только Вам. Я и так потратил на эту мышиную возню много времени.

Добавлено через 6 минут
Цитата Сообщение от Алексей1153 Посмотреть сообщение
чтобы добавлять функционал, не ?
Для стрельбы по воробьям, вы не будете использовать пушку, достаточно только рогатки, которая очень хорошо выполняет свою функцию, она маленькая удобная, из нее быстро и легко прицелится, легче выстрелить, и она помещается в кармане))
0
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
29.05.2024, 11:20
Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
Но может быть я не достиг еще просветления и не понимаю путей айтишного мироощущения)), но прочитав вышесказанное думаю, что ну его на фиг)). Может лет через 10 как вы написали на меня сойдет благодать и я хоть чуть-чуть буду соответствовать вашим богоподобным требованиям, пока приходится только соскребать мусор, и фильтровать из этого, хоть что-нибудь, что может принести реальную пользу.
Очень жаль, что вы так все воспринимаете. Впрочем, ладно, дело ваше.

Цитата Сообщение от AAAAAlexeyyyyy Посмотреть сообщение
Если есть по сути заданного в топике вопроса пишите
Арность и размерность "массива" в динамической памяти можно менять, но это будет за пределами определения языковых массивов. Т.е. new[][][] в этом никак не поможет. И пытаться переназначать области, используя зависимую от компилятора отладочную информацию (те самые FDFD, - они существуют только в debug режиме в компиляторе MSVC) - это путь к нестабильному софту (эксплуатация UB - практически всегда заканчивается плохо). За пределами доступной области вы не можете ничего менять, даже если инструментарий вам это позволяет. И верный знак этого - исключение при попытке освободить память, о котором вы писали, оно говорят о том, что вы попортили внутреннюю структуру динамической памяти и дальнейшая работа программы абсолютно непредсказуема. Делать надо как в посте #6. Указатели сюда добавляются позже, после того как вы напишите основу.
Т.е. порядок действий примерно такой: пишем шаблонный класс, который внутри реализован через линейный массив данных и динамический массив размерностей, с помощью которых размечается линейный массив. Затем при использовании (параметризации шаблона) этого класса можно добавить указатели (сделать на основе этого многомерный массив указателей).
0
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
29.05.2024, 23:04  [ТС]
DrOffset,
Вопрос как раз и был контролирует ли new пересечение областей выделенной памяти или просто выделила и забыла? я думаю что это так.
когда я прописал в ручную в следующую ячейку после вновь созданной страницы массива значение fdfd исключение перестало вылетать и все заработало в штатном режиме, освобождение памяти и тогдалее. Можно попробовать прописать значение fdfd программно, если Вы считаете, что это все в внутреннем debug и посмотреть сработает ли. можно было прогнать через Олечку, но к сожалению нет времени.
Кстати что такое UB?
Первоначальный вопрос был о динамическом создании многомерных поинтеров, сейчас когда я продебужил в разных вариантах создание массивов, я думаю это можно попробовать сделать, правда можно ли заставить это работать?. Делаем функцию которая принимает n значений - это будет являться мерностью массива, а каждое значение это размер измерения. функция рассчитывает объем памяти Пn(1..n)*sizeof(type) + память на поинтеры. раскидываем таблицы поинтеров для каждого измерения и в принципе все. Остается пустяк заставить все это работать)) потому что при попытке подсунуть учителю русского языка выражение [1]...[5] она скажет, что-то типа - не определен такой размерности. Внутри компилятора должна быть - функция массив которая принимает начальный поинтер и определенное количество индексов и выдает адрес или значение. Это должна быть одна функция независимо от размерности массива, что-то типа адрес нулевого поинтера и список индексов (может даже рекурентная, надо больше читать Кнута). Мы не сможем уже подсунуть дополнительные индексы, в попытке использовать эту функцию с искусственно созданным массивом, так как для этого в машинном коде уже нет места. Одни ограничения. Как вы писали "Эта фича .... помогает лучше контролировать программу"
Последний абзац это интересно
В отношении линейного массива, я считаю это хорошая вещь - я это писал. в ассемблере нет многомерных массивов есть линейная память - все остальное это рукоблудие программиста.
1) Неплохо было посмотреть реализацию этого!
2) стандартный компилятор будет правильно трактовать эти индексы? и работать с ним как с обычным массивом или мы просто пишем свою новую функцию под названием массив (или как там в с++ переопределяем функцию) - в которую скидываем индексы адрес таблицы поинтеров и она выдает адреса или значение с этого адреса в зависимости, что мы хотим?.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2024, 23:04
Помогаю со студенческими работами здесь

Создание динамических массивов
Здравствуйте! Есть код, решающий важную для меня задачу - находит и выводит все дистанции (расстояния/длины) между точками. И...

Создание динамических массивов
Здравствуйте. Подтолкните в верном направлении. В начале пользователь задаёт количество массивов, потом размер первого массива, потом...

Создание динамических двумерных массивов
Ошибка в том что массиву не дает число массиву Вызвано исключение по адресу 0x006526FC в лаб 3 3.exe: 0xC0000005: нарушение прав доступа...

Создание и размер динамических массивов
Имеется такая задача: Сделал это так: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;array&gt; #include &lt;vector&gt; ...

Индексация многомерных массивов
Почему в C/C++ массивы объявляются так: int array; Это связано как-то с процессом компиляции кода и другими особенностями языка...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты 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 - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru