Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возложение подсчета размера массива на компилятор 
V
    Опции темы
toxx
Дата 11.3.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: нет
Всего: 13



Но не пойму что от меня нужно.
Инициализировать внешний массив в операторе описания и определить сумму элементов массива, возложив задачу подсчета размера массива на компилятор.
Не понятна выделенная строчка.Ну допустим описал я его int mas[]={1,2,3,4,5,6,7,8,9};
А как подсчитает размер компилятор не понятно...)
PM MAIL   Вверх
Rififi
Дата 11.3.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



toxx
например, передав в функцию подсчета указатель или ссылку на массив.

Код
template <typename T, const size_t N>
inline size_t array_countof(const T (&)[N])
{ return N; }

const size_t N = array_countof(mas);


размер массива будет вычислен на этапе компиляции.
PM MAIL   Вверх
Lazin
Дата 11.3.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



sizeof(mas)/sizeof(int)
PM MAIL Skype GTalk   Вверх
mrbrooks
Дата 11.3.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



sizeof(mas)/sizeof(mas[0]) 
PM MAIL   Вверх
toxx
Дата 11.3.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: нет
Всего: 13



mrbrooks,Lazin 
Блин, как всё это логично))Сразу понял идею и уже опробовал,всё работает.
Rififi
Вот метод указателя\ссылки на массив не совсем.
Я еще не знаком со встроенными функциями типа inline.
Поэтому мне не совсем понятно.
Допустим
int mas[]={1,2,3,4,5,6,7,8,9},*p;
p=s;// p - указатель на 0-й элемент массива.А как посчитать?


PM MAIL   Вверх
Rififi
Дата 11.3.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



toxx
inline тут ни при чём. это просто рекомендация компилятору что неплохо бы сделать функцию встроенной.
более полный синтаксис вызова этой функции выглядит так:
array_countof<int, 9>(mas);
аргументы int и 9 выводятся компилятором автоматически на основании типа обьекта mas, далее функция просто возвращает то, что ей подсунул компилятор.
с переменной 'p' ничего для подсчёта сделать нельзя, т.к. при преобразовании потерян тип исходного обьекта, а указатель на int не тоже самое, что указатель на массив из N int'ов
PM MAIL   Вверх
toxx
Дата 11.3.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: нет
Всего: 13



Rififi
Спасибо.Щас сяду читать дальше книгу=)Про указатели и ссылки.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.