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

Вопрос по структурам - C++

Восстановить пароль Регистрация
 
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
09.03.2014, 13:20     Вопрос по структурам #1
Насколько я знаю можно заполнить структуру "наложив её на память", например
C
1
2
3
4
5
struct A {
   int a;
   char b[2];
   char c;
}
теперь если этой структуре присвоить 7 байт, то они распределятся правильно 4, 2, 1.
Но вопрос первый, как это сделать, в второй, что будет с указателями?
например есть
C
1
2
3
4
5
struct A {
   int a;
   char b[2];
   char *c;
}
Что будет с "c" ?
Не знаю, правильно ли я организовал вопрос, 3 раза переписывал )))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2014, 13:20     Вопрос по структурам
Посмотрите здесь:

C++ Вопрос по структурам
C++ вопрос по структурам
небольшой вопрос по структурам C++
C++ вопрос по структурам
C++ Задачка по структурам
C++ Задание по структурам
программа по структурам C++
C++ Курсовая по структурам

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.03.2014, 13:49     Вопрос по структурам #2
вариант один:
у вас есть объект типа A и массив байт.
берете и копируете все байты из массива по адресу этого объекта:
C++
1
2
3
4
A a;
char bytes[sizeof(A)];
// заполняем массив байт
memcpy(&a, bytes, sizeof(A));
вариант два:
Обекта нет. есть только указатель на кусок памяти.
Берем этот указатель и кастим его к указателю на структуру
C++
1
2
3
void* ptr = ...
A* aPtr = (A*) ptr;
aPtr->a = 666; // записываем туда что-то.
В случае указателей:
указатель в 32 битной системе занимает 4 байта. и в этих четырех байтах
какой-то адрес. Если вы этот указатель перезапишите своими байтами,
то они конечно образуют какое-то значение, которое будет интерпретироваться
как адрес. но вот обращение по такому адресу может привести к краху проги,
если адрес будет указывать непонятно куда.

И еще структура не обязательно будет состоять из 7 байт, даже если сумма
размеров отдельных мемберов составляет 7. Компилятор может скомпоновать
такую структуру с учетом всяким там выравниваний. Размер может оказаться
больше.
Yandex
Объявления
09.03.2014, 13:49     Вопрос по структурам
Ответ Создать тему
Опции темы

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