Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
1

Обратиться к членам массива структур по ссылке

31.10.2018, 14:00. Показов 1243. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объявляем и выделяем место в динамической памяти для массива из 10 структур:
C++
1
2
3
4
5
6
struct Data
{
    int t;
    String s;
};
struct Data *dt = new struct Data[10];
Теперь я могу обратиться к членам массива структур так:
C++
1
2
    dt[1].t
    dt[1].s
Возможно ли такое обращение:
C++
1
2
    dt[1]->t
    dt[1]->s
и в каком случае?
При объявлении массива структур его содержимое может быть забито случайными значениями?
Возможно ли объявить статический массив структур?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2018, 14:00
Ответы с готовыми решениями:

Как обратиться к компонентам фрейма из формы-владельца не по имени, а как к членам массива?
Всем здравствуйте. Есть форма и принадлежащий ей фрейм. #include <vcl.h> #pragma hdrstop ...

Не могу обратиться к членам базового класса
Не могу обратиться к членам базового класса, если они в protected. Почему так? Ведь мы же...

Обратиться к члену массива структур при помощи указателя
Пытаюсь обратиться к члену массива структур при помощи указателя, но у меня не выходит: #include...

Как из другой функции обратиться к членам класса окна?
Здравствуйте! Вобщем в VC6 у меня есть класс окна, зовется CMyDlg. Так вот по нажатию на кнопку...

4
1212 / 706 / 335
Регистрация: 22.02.2018
Сообщений: 2,059
Записей в блоге: 2
31.10.2018, 14:08 2
jkrnd, Когда-то давно, не помню название книги, прочитал, что к свойствам своих структур обращайся через ".", возможно, я не прав, но будет полезно выслушать авторитетное мнение.

Добавлено через 4 минуты

Не по теме:

А в этой ветке форума (да и не только) для меня главными авторитетами являются volvo, D1973, gunslinger и nick42. Никакой лести - эти люди дают реально дельные советы и подсказки. Спасибо им огромное!

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
31.10.2018, 14:09 3
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Цитата Сообщение от jkrnd Посмотреть сообщение
Возможно ли такое обращение:
Возможно. Когда у тебя будет массив указателей на структуру, а не указатель на массив структур.

Цитата Сообщение от jkrnd Посмотреть сообщение
При объявлении массива структур его содержимое может быть забито случайными значениями?
Смотря как (и где) объявлен массив структур.

Цитата Сообщение от jkrnd Посмотреть сообщение
Возможно ли объявить статический массив структур?
Кто мешает?
0
178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
31.10.2018, 15:29  [ТС] 4
Цитата Сообщение от TrollHammer Посмотреть сообщение
Спасибо им огромное!
искренне присоединяюсь!

Добавлено через 3 минуты
Цитата Сообщение от volvo Посмотреть сообщение
Кто мешает?
но ведь тогда всё уйдёт на стек а не в кучу, а он не безразмерный.
Цитата Сообщение от volvo Посмотреть сообщение
Когда у тебя будет массив указателей на структуру
если можно - пример объявления.

Добавлено через 11 минут
Цитата Сообщение от volvo Посмотреть сообщение
Смотря как (и где) объявлен массив структур.
массив структур объявлен в cpp-файле формы, сразу после
C++
1
2
3
4
#pragma package(smart_init)
#pragma resource "*.dfm"
 
TForm1 *Form1;
Добавлено через 5 минут
объявление:
C++
1
struct Data *dt_stat[5];
следующее обращение выдаёт ошибку Access Violation:
C++
1
dt_stat[1]->t = 15;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
31.10.2018, 15:39 5
Цитата Сообщение от jkrnd Посмотреть сообщение
но ведь тогда всё уйдёт на стек а не в кучу, а он не безразмерный
Куча тоже не безразмерная. Это во-первых. Во-вторых, статический массив, объявленный там, где ты показываешь, не будет расположен в стеке. Он будет занесен в сегмент BSS, а там гораздо больше места

Цитата Сообщение от jkrnd Посмотреть сообщение
следующее обращение выдаёт ошибку Access Violation:
Правильно, ты опять выделяешь место только под указатели, не выделяя под сами данные. Сделай уже просто

C++
1
Data dt_stat[5]; // вот это - статический, а не динамический массив для 5 структур...
1
31.10.2018, 15:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2018, 15:39
Помогаю со студенческими работами здесь

Используя какое пространство имен, можно обратиться к любым, даже закрытым, членам управляемых объектов?
Используя какое пространство имен, можно обратиться к любым, даже закрытым, членам управляемых...

Обратиться именно к третей ссылке
<div class="breadcrumb"> <a></a> <a></a> <a></a> <a></a> </div> Подскажите...

Как обратиться к динамической ссылке
Добрый день! Есть cайт "http://grls.rosminzdrav.ru/GRLS.aspx". Там в правом углу ссылка на...

Как обратиться к массиву структур
Создал структуру class strForDebug { public double dCoordinates; public...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru