Си++ вам не Си
2020-04-11 14:39![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В частности, передавать массивы в качестве параметров лучше всего по ссылке:
Такую процедуру не удастся вызвать с параметром - массивом другого, неподходящего размера.
Если же написать, как в Си:
то такой параметр фактически обрабатывается как "int *array", и никакой проверки размера массива не делается.
void foo(int (&array)[10]) { //... }
Такую процедуру не удастся вызвать с параметром - массивом другого, неподходящего размера.
Если же написать, как в Си:
void bar(int array[10]) { //... }
то такой параметр фактически обрабатывается как "int *array", и никакой проверки размера массива не делается.
no subject
Date: 2020-04-11 22:11 (UTC)std::array<int, 10>
no subject
Date: 2020-04-11 22:30 (UTC)вот что не рекомендуецца так это числовые константы в коде, их лучше определять в топовом хедере как const size_t myArrayLimit = 10; и не искать потом по всему коду
no subject
Date: 2020-04-12 19:50 (UTC)no subject
Date: 2020-04-12 02:02 (UTC)no subject
Date: 2020-04-12 19:50 (UTC)no subject
Date: 2020-04-12 02:06 (UTC)no subject
Date: 2020-04-12 02:28 (UTC)constexpr
функцииИх можно вычислять в Compile time
no subject
Date: 2020-04-12 19:55 (UTC)https://en.cppreference.com/w/cpp/language/constexpr
no subject
Date: 2020-04-12 04:36 (UTC)no subject
Date: 2020-04-12 20:02 (UTC)no subject
Date: 2020-04-12 20:13 (UTC)no subject
Date: 2020-04-12 07:19 (UTC)no subject
Date: 2020-04-12 19:59 (UTC)no subject
Date: 2020-04-13 03:04 (UTC)no subject
Date: 2020-04-14 06:15 (UTC)no subject
Date: 2020-04-15 15:38 (UTC)> void bar(int array[10])
получается, что 10 - буквально ни о чем. Что с таким же успехом можно ставить 20, 2
Так ?
no subject
Date: 2020-04-16 04:53 (UTC)массив становится указателем на 1й елемент
https://opensourceforu.com/2016/09/decayintopointers/
no subject
Date: 2020-04-16 06:59 (UTC)Просто я люблю, чтобы код был читабелен даже козе, например
https://vlkamov.livejournal.com/685130.html
Если массив всегда из 10 элементов, то 10-ка должна быть прописана в коде функции.
Тогда ею вообще не следует захламлять вызов и объявление, например
void bar(int array[])
или для ясности
void bar(int array_10[])
Но если массив то там то сям разной длины, функции следует сообщить, сколько чего, например
void bar(int array[], 10)
...
void bar(int array[], 22)
Хотя не уверен, что компилятор напрямую скушает такие конструкции.
no subject
Date: 2020-04-17 03:55 (UTC)> или для ясности
> void bar(int array_10[])
так проблема в том, что человеку, возможно, это и помогает, а железяке - нет. Нет возможности громко закричать если юсер запулил туда массив из 9ти элементов.
> void bar(int array[], 22)
это Фортран с точки зрения С