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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
#1

Обращение по адресу к элементам структуры - C++

19.04.2012, 13:32. Просмотров 2247. Ответов 5
Метки нет (Все метки)

Есть структура fs:
C++
1
2
3
4
5
6
7
struct fs
{
     f_element;
     s_element;
     ...
    n_element;
};
Есть массив указателей на структуру
C++
1
struct fs *p = new struct fs [n];
Для перемещения по объектам используем конструкцию типа p[i] (0<i<n), где p[i] - это должен быть адрес первого элемента структуры.
Как перемещаться по элементам p[i] структуры? Нужно обойти констуркцию p[i].n_element;

Добавлено через 21 минуту
Надо попробовать увеличить адресс-p[i] на число байт, которое занимает один элемент структуры. Вроде должно получиться

Добавлено через 29 минут
Не, все равно не получается
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2012, 13:32     Обращение по адресу к элементам структуры
Посмотрите здесь:

C++ Обращение к элементам вектора
Почему обращение к недоступному адресу в памяти C++
C++ Обращение к элементам массива структур
Обращение к элементам двухмерного динамического массива C++
Обращение к элементам класса через [] C++
Обращение к элементам массива используя указатель C++
C++ Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09
C++ Обращение к элементам std::vector используя указатель
C++ Сортировка эл-ов списка, обращение к элементам
Обращение к элементам матрицы C++
C++ Обращение к элементам вектора
Осуществить обращение к элементам массива по указателю C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,383
Завершенные тесты: 1
19.04.2012, 13:41     Обращение по адресу к элементам структуры #2
Объясните точнее, что Вы хотите сделать, ничего из выше написанного я не понял
Байт
Эксперт C
15246 / 9648 / 1431
Регистрация: 24.12.2010
Сообщений: 17,975
19.04.2012, 13:54     Обращение по адресу к элементам структуры #3
Чем не нравится
C++
1
p[i].n_element
?
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
19.04.2012, 13:56  [ТС]     Обращение по адресу к элементам структуры #4
Цитата Сообщение от Toshkarik Посмотреть сообщение
Объясните точнее, что Вы хотите сделать, ничего из выше написанного я не понял
В цикле фор необходимо заполнить элементы p[i]-структуры. Не придумал ничего лучшего, чем попытаться обратиться поадресно к каждому элементу. В обычном случае мне бы пришлось делать так:
C++
1
2
3
4
5
6
for(int i=0;i<n;i++)
{
cin>> p[i].f_element;
cin >> p[i].s_element;
....
}
Если у меня добавляется ещё один элемент в структуру, мне придется вернуться в этот цикл и добвать ещё одну запись для заполнения p[i].n_element-а и увеличить число n на единицу. Я хочу сделать так, чтобы убрать "." и имя элемента. Т.е. обратиться по адресу к конкретному элементу и записать туда значение, после чего перейти к следующему элементу путем увеличения адреса на соответствующее число байт и проделать тоже самое.
Байт
Эксперт C
15246 / 9648 / 1431
Регистрация: 24.12.2010
Сообщений: 17,975
19.04.2012, 14:00     Обращение по адресу к элементам структуры #5
Встречный вопрос. Какой тип имеют f_element, s_element ... ?
Если одинаковый, почему бы не сделать из них массив?
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
19.04.2012, 14:16  [ТС]     Обращение по адресу к элементам структуры #6
Цитата Сообщение от Байт Посмотреть сообщение
Встречный вопрос. Какой тип имеют f_element, s_element ... ?
Если одинаковый, почему бы не сделать из них массив?
это указатели на тип char...
А хорошая идея ) Сейчас попробую

Добавлено через 13 минут
Цитата Сообщение от Байт Посмотреть сообщение
Встречный вопрос. Какой тип имеют f_element, s_element ... ?
Если одинаковый, почему бы не сделать из них массив?
Спасибо. Это именно так, как я и хотел
Yandex
Объявления
19.04.2012, 14:16     Обращение по адресу к элементам структуры
Ответ Создать тему
Опции темы

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