=ARRAYFORMULA({0; ROW(A1:A100)&0})
или:
=ARRAYFORMULA({0\ ROW(A1:A100)&0})
, если вам нужны действительные числа, используйте:
[ 112]
или:
=ARRAYFORMULA({0\ VALUE(ROW(A1:A100)&0)})
Константа особенно полезна с указателями, или ссылки передали функции - это - немедленно понятный "контракт API", своего рода, что функция не изменит переданный объект.
См. также: http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.4
При использовании в качестве ссылки константы в функции она позволяет вызывающей стороне знать, что вещь, передаваемая в, не будет изменена.
void f(Foo &foo, const Bar &bar) { ... }
В этом случае вызывающая сторона будет знать что foo
мог бы быть изменен, но bar
не будет. Компилятор осуществит это при компиляции тела f()
, так, чтобы bar
никогда не изменяется и никогда не передается другой функции, которая могла бы изменить его.
Все вышеупомянутые гарантии могут быть обойдены с помощью const_cast
, который является, почему такой бросок считают "опасным" (или по крайней мере, подозрительный).
Кажется довольно очевидным - это мешает Вам изменять вещи, которые не должны быть изменены.
Править: для большего руководства всегда обращайтесь к Herb Sutter.
Я не так убежден на аспекте "безопасности" константы (существуют за и против).... однако, что это действительно позволяет, определенный синтаксис, что Вы не можете обойтись без константы
void blah(std::string& x)
{}
может только взять станд.:: строковый объект... Однако, если Вы объявляете это константа:-
void blah(const std::string& x) {}
можно теперь сделать
blah("hello");
который вызовет соответствующего конструктора для создания станд.:: строка
Кроме того, при помощи константы Вы заявляете свое намерение для использования переменной или параметра. Это - хорошая практика программирования ("C/C ++ Coding Style & Standards", объект 2.3).
Также путем избегания использования #define для определения констант и использования константы Вы увеличиваете безопасность типов своего кода. Инструкции по Практике программирования на C++ - объект 2.1
Аспект контракта константы также важен для оптимизатора компилятора. С определенными объявлениями константы оптимизация, включающая инварианты цикла, легче для оптимизатора определить. Поэтому const_cast действительно опасен.