Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
sezeof() должна возвращать размер переменной. Если переменная - указатель на массв, должна вернуть размер указателя.
Отправлено
Artem-1.6E-19
22 февраля 2008 г. 14:33
В ответ на:
В CV AVR функция sizeof() возвращает размрность массива или нет? Что то цикл от нуля до sizeof() работать не хочет...
отправлено Dikoy 22 февраля 2008 г. 14:25
Составить ответ
|
Вернуться на конференцию
Ответы
Иными словами, как мне получить размер массива? Массив статический, можно через дефайн, конечно, размер задать. Но через sizeof удобнее. Она всё равно оптимизируется при компиляции.
—
Dikoy
(22.02.2008 14:39:28
194.186.243.194
,
пустое
)
Не верь Артёму. Он Си не знает.
—
vmp
(22.02.2008 14:43:14
87.245.155.198
, 870 байт)
Сам то, понял что процитировал? :)
—
Artem-1.6E-19
(22.02.2008 14:48:39
209.160.64.220
,
пустое
)
Конечно. А я ещё и по английски читать умею.
—
vmp
(22.02.2008 14:55:1
87.245.155.198
, 2268 байт,
ссылка
)
Ну а теперь скажи что именно я не так написал?
—
Artem-1.6E-19
(22.02.2008 15:04:40
209.160.64.220
,
пустое
)
"массив" в С - штука интересная. Если взять только имя массива, то в выражениях, где ожидается указатель - это указатель на его первый элемент (в том числе структуру, другой массив - т.е. не на байт, а именно на элемент), а если это имя стоит в sizeof - то возвращается размер массива в единицах sizeof(char) (а не в байтах) с учётом выравнивания элемента массива (+)
—
ReAl
(22.02.2008 15:36:48
193.111.248.46
, 148 байт)
"SIZEOF(OBJECT) выдает целое, равное размеру указанного объекта. (Размер определяется в неспецифицированных единицах, называемых "байтами", которые имеют тот же размер, что и переменные типа CHAR)." - Крниган, Ричи.
—
Леонид Иванович
(22.02.2008 16:13:43
87.252.227.59
,
пустое
)
Конечно. Но только размер стурктуры в общем случае не равен сумме размеров её элементов. Поэтому при выравнивании на два "байта" sizeof(int)==2 для указанной структуры из int + char возвращённое sizeof будет 4 а не 3 и дальше с массивом аналогично.
—
ReAl
(22.02.2008 16:44:9
193.111.248.46
,
пустое
)
Тху. Ну не важно. Просто сейчас уже настолько привычно, что "байт == 8 бит", что и я стал на эту тему заедать.
—
ReAl
(22.02.2008 16:45:17
193.111.248.46
,
пустое
)
т.е. sizeof(char) == 1 по определению, но эта единичка может быть равна двум "нынешним байтам".
—
ReAl
(22.02.2008 16:51:59
193.111.248.46
,
пустое
)
Не размер указателя, а размер того, на что он указывает.
—
vmp
(22.02.2008 15:11:42
87.245.155.198
,
пустое
)
Как sizeof может это узнать вообще?
—
Artem-1.6E-19
(22.02.2008 15:16:23
209.160.64.220
, 185 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 13:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru