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

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

Войти
Регистрация
Восстановить пароль
 
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
#1

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

28.06.2014, 17:33. Просмотров 413. Ответов 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;
}
Правда, пока затрудняюсь ответить, где это может быть полезно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 17:33     Указатель на безразмерный массив
Посмотрите здесь:

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

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

Что быстрее использовать, массив э-в, или указатель на массив э-в? - C++
уважаемые, что быстрее использовать, массив э-в, или указатель на массив э-в? или без разницы? С одной стороны обращается все к той же...

Безразмерный файл забить структурами и осуществить их сортировку - C++
Очень не понятно что в этой задачке от меня требуется)) Текст задачи: Безразмерный файл забить структурами и осуществить их...

OpenCL безразмерный буфер видеокарты RADEON HD6870 - C++
Имею проблему при загрузке массивов в буфер видеокарты под OpenCL (не путать с OpenGL). На борту видео всего 1 Гиг, но умудряюсь записать...

Указатель на массив - C++
Не могу разобраться в указателях. Допустим есть двумерный массив, выводятся поочереди 19 элементов. Если я в инструкции if поменяю...

указатель на массив - C++
Добрый день, объясните как верно будет. например определим массив char array = {"qaqaqaqqa"} к примеру есть функция void primer(...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
28.06.2014, 17:43     Указатель на безразмерный массив #2
Цитата Сообщение от Tulosba Посмотреть сообщение
А в каком случае можно (и нужно ли) использовать подобный указатель в плюсах (если конечно не прибегать к reinterpret_cast)?
http://ideone.com/uGWNsO
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.06.2014, 18:08  [ТС]     Указатель на безразмерный массив #3
Croessmah,
Цитата Сообщение от Tulosba Посмотреть сообщение
Код C
Или что ты хотел этим показать?
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
28.06.2014, 18:16     Указатель на безразмерный массив #4
Цитата Сообщение от Tulosba Посмотреть сообщение
Или что ты хотел этим показать?
да так, старческий маразм

Добавлено через 5 минут
C++
1
static int v[];
а разве это не incomplete type?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.06.2014, 18:37  [ТС]     Указатель на безразмерный массив #5
Цитата Сообщение от Croessmah Посмотреть сообщение
а разве это не incomplete type?
А какая разница? Я просто привел пример выражения, где можно использовать указатель на безразмерный массив.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
28.06.2014, 18:45     Указатель на безразмерный массив #6
Цитата Сообщение от 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.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.06.2014, 19:08  [ТС]     Указатель на безразмерный массив #7
Croessmah, так я же не утверждаю, что имеет смысл потом разыменовывать или ещё как-то работать с полученным адресом. Всего лишь демонстрация кода, который "съел" компилятор C++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2014, 16:02     Указатель на безразмерный массив
Еще ссылки по теме:

Указатель на массив - C++
Есть такая структура struct Elem { char cos; Elem * next; Elem * prev; }; Elem * Head=NULL,*Tail=NULL;

Массив и указатель - C++
При компиляции кода, приведенного ниже, вывод происходит со второго числа. Почему? int mass = {1, 2, 3, 4, 5, 6}; int *pmass = mass; ...

Указатель на массив - C++
Подскажите пожалуйста, как создать указатель на массив, если длина массива записана в переменной? Т.е проблема в том что в квадратных...

Указатель на массив - C++
Здравствуйте , подскажите пожалуйста , есть функция , вопрос заключается в указателе мне нужно передать массив в функцию через указатель (...

указатель и массив - C++
подскажите плс эти две строки эквивалентны? char* str="bla bla bla"; char str={"bla bla bla"}; Почему при выводе адреса 1...


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

Или воспользуйтесь поиском по форуму:
DrOffset
6922 / 4115 / 942
Регистрация: 30.01.2014
Сообщений: 6,910
29.06.2014, 16:02     Указатель на безразмерный массив #8
Tulosba, честно пытался придумать пример, но не вышло Была идея использовать это в каком-нибудь метапрограммировании, но из-за того, что такой указатель не может быть параметром функции все провалилось. Да и решение, даже если бы оно заработало, имело бы более качественные аналоги с использованием других средств. Так что, ИМХО, подобный указатель - это рудимент синтаксиса. И ничего полезного он не делает.
Yandex
Объявления
29.06.2014, 16:02     Указатель на безразмерный массив
Ответ Создать тему
Опции темы

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