Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046

Указатель на безразмерный массив

28.06.2014, 17:33. Показов 2648. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такое понятие как "безразмерный массив" или "массив неизвестного размера".
В голых сях можно например указателю такого типа присваивать адрес массива любой размерности:
C
1
2
3
4
5
6
7
8
9
10
11
12
int main() {
    
    int (*p)[]; // указатель на безразмерный массив
    
    int a[] = {1};
    int b[] = {1,2};
 
    p = &a; // работает
    p = &b; // тоже работает
 
    return 0;
}
А в каком случае можно (и нужно ли) использовать подобный указатель в плюсах (если конечно не прибегать к reinterpret_cast)?

Один вариант уже нашел:
C++
1
2
3
4
5
6
7
8
9
10
struct C
{
    static int v[];
};
 
int main() 
{
    int (*p)[] = &C::v;
    return 0;
}
Правда, пока затрудняюсь ответить, где это может быть полезно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2014, 17:33
Ответы с готовыми решениями:

Безразмерный массив
Доброго времени суток! Столкнулся с такой проблемой: как можно сделать массив int не указывая его размерность...тобишь чтоб он сам мог...

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...

Указатель на функцию, которая принимает в качестве параметра указатель на массив
я не понимаю. вроде делаю правильно, но выходит ошибка. есть функция. int foo(int *mas){}; cоздаю на нее указатель. int...

7
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.06.2014, 17:43
Цитата Сообщение от Tulosba Посмотреть сообщение
А в каком случае можно (и нужно ли) использовать подобный указатель в плюсах (если конечно не прибегать к reinterpret_cast)?
http://ideone.com/uGWNsO
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.06.2014, 18:08  [ТС]
Croessmah,
Цитата Сообщение от Tulosba Посмотреть сообщение
Код C
Или что ты хотел этим показать?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.06.2014, 18:16
Цитата Сообщение от Tulosba Посмотреть сообщение
Или что ты хотел этим показать?
да так, старческий маразм

Добавлено через 5 минут
C++
1
static int v[];
а разве это не incomplete type?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.06.2014, 18:37  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
а разве это не incomplete type?
А какая разница? Я просто привел пример выражения, где можно использовать указатель на безразмерный массив.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.06.2014, 18:45
Цитата Сообщение от Tulosba Посмотреть сообщение
А какая разница?
ну как бы
A class that has been declared but not defined, or an array of unknown size or of incomplete element type, is an incompletely-defined object type.43 Incompletely-defined object types and the void types are incomplete types (3.9.1). Objects shall not be defined to have an incomplete type.

43) The size and layout of an instance of an incompletely-defined object type is unknown.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.06.2014, 19:08  [ТС]
Croessmah, так я же не утверждаю, что имеет смысл потом разыменовывать или ещё как-то работать с полученным адресом. Всего лишь демонстрация кода, который "съел" компилятор C++.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
29.06.2014, 16:02
Tulosba, честно пытался придумать пример, но не вышло Была идея использовать это в каком-нибудь метапрограммировании, но из-за того, что такой указатель не может быть параметром функции все провалилось. Да и решение, даже если бы оно заработало, имело бы более качественные аналоги с использованием других средств. Так что, ИМХО, подобный указатель - это рудимент синтаксиса. И ничего полезного он не делает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.06.2014, 16:02
Помогаю со студенческими работами здесь

Дан безразмерный массив.Вставить количество символов каждой строки вначало этой же строки.
Массив считывается из файла,а в проге указывается как указатель на указатель **.Запуск программы+файла происходит из командной строки.Если...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Динамический массив и указатель на указатель
Спасибо за внимание) Задача такова: нужно удалить элемент по индексу, при этом уменьшить сам массив на 1 (т.е. удалили элемент - уменьшился...

Безразмерный массив
Нужен массив в который я могу засунуть столько элементов сколько у меня будет, и я не знаю сколько их. Пытался сделать так: String Data...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru