Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Иными словами, как мне получить размер массива? Массив статический, можно через дефайн, конечно, размер задать. Но через sizeof удобнее. Она всё равно оптимизируется при компиляции.
Отправлено
Dikoy
22 февраля 2008 г. 14:39
В ответ на:
sezeof() должна возвращать размер переменной. Если переменная - указатель на массв, должна вернуть размер указателя.
отправлено Artem-1.6E-19 22 февраля 2008 г. 14:33
Составить ответ
|
Вернуться на конференцию
Ответы
Не верь Артёму. Он Си не знает.
—
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 изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 6 на 2:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru