Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
А... То есть он мне сейчас возвращает сумму длин всех переменных массива?
Отправлено
Dikoy
22 февраля 2008 г. 14:40
В ответ на:
Цикл надо до sizeof(array) / sizeof(array[0]);
отправлено vmp 22 февраля 2008 г. 14:35
Составить ответ
|
Вернуться на конференцию
Ответы
С учётом выравнивания. Т.е. если элемент массива - struct A { int i; char a; }, то при двухбайтовом int sizeof(struct A) даст 4 и при массиве struct A a[10]; sizeof(a) даст 40.
—
ReAl
(22.02.2008 15:39:53
193.111.248.46
,
пустое
)
Это, к примеру, на 16-битном процессоре или на любом другом с выравниванием по умолчанию на 16 бит.
—
ReAl
(22.02.2008 15:40:46
193.111.248.46
,
пустое
)
У меня AVRка простая.
—
Dikoy
(22.02.2008 15:46:1
194.186.243.194
,
пустое
)
Массив чаровский, то есть элементы по 8 бит.
—
Dikoy
(22.02.2008 15:46:35
194.186.243.194
,
пустое
)
Во! Сделал как vmp писал и кажется поехало:
—
Dikoy
(22.02.2008 15:52:27
194.186.243.194
, 1049 байт)
Ну да. И вообще #define ARRAY_LEN(a) (sizeof(a)/sizeof(a[0]))
—
ReAl
(22.02.2008 16:38:47
193.111.248.46
,
пустое
)
Грубо говоря - общий размер памяти в байтах, занимаемый массивом.
—
vmp
(22.02.2008 14:44:3
87.245.155.198
,
пустое
)
А sizeof оптимизируется компилятором (заменяется константой) в процессе компиляции или нет для статического массива?..
—
Dikoy
(22.02.2008 14:57:42
194.186.243.194
,
пустое
)
Он и есть константа.
—
Artem-1.6E-19
(22.02.2008 15:05:22
209.160.64.220
,
пустое
)
Должен заменяться. Как в CV - не знаю, с ним не работал.
—
vmp
(22.02.2008 15:01:6
87.245.155.198
,
пустое
)
Судя по ассемблерному листингу он его вообще не откомпилил... :(
—
Dikoy
(22.02.2008 15:21:37
194.186.243.194
, 2300 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите из двух единицу:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru