ссылке? Я просто читал что все по значению передаётся
вы работаете с сишным массивом передаваться может по-разному почему не std::vector?
всё передаётся по значению, пока явно не указано обратное, однако int [], как я уже сказал, в аргументе функции эквивалентно int*, поэтому f(arr) - это передача указателя, а не массива целиком
По ссылке. Если передаёте Сишный массив
А, теперь понял. Значит, если передавать по значению, надо писать так: int len(int arr) {}
сишный массив не получится передать по значению, он вредный для этого
Что такое std::vector?
Это 🧰. Всмысле контейнер.
Когда я пишу int arr[10]; я создаю сишный массив? Ладно, пойду искать как делать сиплюсплюсный...
std::array. Можешь не искать
то, чем в С++ нередко пользуются вместо сишных массивов https://en.cppreference.com/w/cpp/container/vector пример внизу страницы (хотя более точный аналог, это, конечно, std::array)
ну да, обычно его называют сишным. его можно использовать и в плюсах, просто из-за его "особенностей" для большинства задач лучше подходит std::array (полный эквивалент с нормальной семантикой копирования), std::vector (динамический массив) или какой-либо другой контейнер
А как тогда решить проблему используя сишный массив? Если мне необходимо именно его передать в функцию?
в структуру его можешь засунуть
По значению передать? Передай указатель и скопируй из него, куда нужно. И размер передавай самостоятельно
Обсуждают сегодня