Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
1

Массив и структура в одном адресном пространстве

27.05.2017, 15:50. Просмотров 429. Ответов 4
Метки нет (Все метки)

Мне необходимо создать массив и структуру в одном адресном пространстве. То есть, чтобы заполнять его можно было, как структуру, а извлекать данные, как из массива.
Составил контрольный пример, но он, к сожалению, не работает, как надо.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <string.h>
#include <math.h>
 
typedef unsigned long int uint32_t;
typedef unsigned int uint16_t;
typedef unsigned char byte;
 
byte a[10];
struct TStruct
       {
       byte a1;
       uint16_t a2;
       uint32_t a3;
       };
 
void main(void)
{
a[0]=1;
a[1]=1;
a[2]=1;
a[3]=1;
a[4]=1;
a[5]=1;
a[6]=1;
struct TStruct*p;
p=&a;
printf("%d %d %d\n",p->a1,p->a2,p->a3);
}
По идее, должно печататься: 1 257 16843009
Но даёт другие цифры.
Кто может помочь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2017, 15:50
Ответы с готовыми решениями:

Структура записи и массив строк.
Есть вот такая структура struct plan{ char name; char zodiac; ...

Динамический массив, функции, структура
//исходник. //двумерный массив заданной размерности(у меня 3 на 4) заполняется...

Структура, включающая массив как один из элементов
Помогите пожалуйста, не могу понять. Есть структура, включающая как один из...

Где выполняются PHP- скрипты в отдельном адресном пространстве или в адресном пространстве сервера?
Кто знает где выполняются PHP- скрипты в отдельном адресном пространстве или в...

Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном процессе)
Здравствуйте! Есть задание: Написать программу, создающую два потока, которые...

4
likehood
966 / 815 / 390
Регистрация: 25.12.2016
Сообщений: 2,691
Завершенные тесты: 3
27.05.2017, 16:44 2
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
typedef unsigned int uint16_t;
Вы уверены, что это unsigned int - это 16-разрядный тип?

Вообще, все эти названия типов уже прописаны в файле <stdint.h>, так что не нужды изобретать велосипед.
0
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
27.05.2017, 17:23  [ТС] 3
Да, Вы правы. Плюс, не учёл выравнивание. Теперь работает.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <inttypes.h>
 
typedef unsigned char byte;
 
byte*a;
#pragma pack(push,1)
struct TStruct
       {
       byte a1;
       uint16_t a2;
       uint32_t a3;
       };
#pragma pack(pop)
 
void main(void)
{
struct TStruct st;
a=&st;
 
a[0]=1;
a[1]=1;
a[2]=1;
a[3]=1;
a[4]=1;
a[5]=1;
a[6]=1;
a[7]=1;
printf("%u %u %u\n",st.a1,st.a2,st.a3);
}
0
Mournful Max
Велосипедист...
346 / 213 / 74
Регистрация: 15.12.2015
Сообщений: 784
Завершенные тесты: 1
27.05.2017, 17:26 4
Massaraksh7, не уверен, что a[ 7 ] (в Вашем случае) касается структуры...
0
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
27.05.2017, 19:39  [ТС] 5
Не касается. Это я проверял выравнивание и забыл убрать.
0
27.05.2017, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2017, 19:39

Как заставить процесс всегда запускаться в одном и том же адресном пространстве?
Дано: трейдерская программа типа форекс, с кучей ехе и dll, в реальном времени...

Перехват функции в адресном пространстве сессии
Доброго времени суток! Столкнулся с некоторым неудобством касательно...

Просмотр данных в адресном пространстве приложения
Знак подчеркивания означает, что подчеркнутое поле программа должна...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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