реклама на сайте
подробности

 
 
> Как определить размер массива?, с использованием sizeof
011119xx
сообщение Jun 21 2012, 06:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Массивы объявлены следующим образом:
Код
const int16_t TEK0018[2500] = {88, ..., 85};
const int16_t TEK0019[2500] = {87, ..., 90};
...
const int16_t TEK0029[2500] = {89, ..., 84};

const int16_t *TEK00xx[] = {TEK0018, TEK0019, TEK0020, TEK0021, TEK0022, TEK0023, TEK0024, TEK0025, TEK0026, TEK0027, TEK0028, TEK0029};

Далее по ходу программы нужно определить размер массива на который указывает TEK00xx[index]. Как это сделать с использованием sizeof? sizeof(TEK0018) дает результат 5000, что верно. Мне же нужно, что-то типа sizeof(TEK00xx[index]).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jun 21 2012, 06:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(011119xx @ Jun 21 2012, 10:47) *
sizeof(TEK0018) дает результат 5000, что верно.

sizeof(TEK0018) / sizeof(TEK0018[0]) даст верный результат.

Цитата(011119xx @ Jun 21 2012, 10:47) *
Мне же нужно, что-то типа sizeof(TEK00xx[index]).

А вот так не получится.
Go to the top of the page
 
+Quote Post
011119xx
сообщение Jun 21 2012, 07:13
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Цитата(aaarrr @ Jun 21 2012, 11:51) *
А вот так не получится.

Как обоснуете?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 25 2012, 01:01
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (011119xx @ Jun 21 2012, 15:13) *
Как обоснуете?

sizeof - на сколько я знаю, макрос, который обрабатывается препроцессором.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
XVR
сообщение Jun 25 2012, 08:17
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(haker_fox @ Jun 25 2012, 05:01) *
sizeof - на сколько я знаю, макрос, который обрабатывается препроцессором.

Компилятором вообще то, но возвращает константу времени компиляции. Хотелка автора в виде sizeof(TEK00xx[index]) по его задумке должна возвращать разные константы, в зависимости от текущего значения index, отсюда следует, что sizeof этого ни в каком виде сделать не сможет
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 26 2012, 06:42
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (XVR @ Jun 25 2012, 16:17) *
Компилятором вообще то, но возвращает константу времени компиляции. Хотелка автора в виде sizeof(TEK00xx[index]) по его задумке должна возвращать разные константы, в зависимости от текущего значения index, отсюда следует, что sizeof этого ни в каком виде сделать не сможет

Да, я уже понял, спасибо! Однако, цель моего предыдущего ответа все-таки состояла в том, чтобы намекнуть автоу, почему он не может вычислять размер объектов во время выполнения программы. Поэтому, объективно я прав! biggrin.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 12:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016