Изучаю самостоятельно Си. Будет ли вызываемая функция автоматически знать размер массива, если массив передается?: 23 комментария

  1. При передаче массива в качестве аргумента функции будет передаваться указатель, поэтому размер массива будет невозможно узнать.

  2. Массивы с динамическим выделением памяти используют, когда размер массива не известен на этапе компиляции.

  3. Когда обычная переменная передается по значению, C++ копирует значение аргумента в параметр функции.

  4. Для этого функция должна знать (или определить)размер массива.

  5. Ваши программы будут передавать массивы в функции точно так же, как и любые другие переменные.

  6. Если посмотреть на функцию arr_make(), то можно заметить, что ее первый параметр выглядит немного странно.

  7. Важно понять, что при использовании массива в качестве аргумента функции происходит передача в функцию его адреса.

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

  9. Вы не можете делать полезные вещи на встроенных массивах, таких как назначение, перемещение или копирование.

  10. Пусть a2 обозначает формальный параметр, через который в функцию передается двумерный массив.

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

  12. Однако есть более простой способ доступа к данным массива путем передачи указателя на первый элемент двумерного массива.

  13. С другой стороны, среди формальных параметров функции можно объявить и обычный массив, и даже массив без указания размера.

  14. И вдобавок, если вы не укажете размерность инициализируемого массива, она будет определена по количеству элементов в списке инициализации.

  15. Тексты в кавычках эквивалентны инициализации каждой строки в массиве.

  16. N];Но! Будет ли такой способ правильным для создания массива?

  17. При передаче структуры по адресу передается только адрес структуры в памяти (указатель на структуру).

  18. И никакая функция не возвращает массив, в общем случае возвращает указатель на кучу говна в памяти.

  19. Переменная d при этом никак не изменится.

  20. Первые скобки необходимо оставить пустыми, но все следующие необходимо заполнить, указав соответствующий размер.

  21. Массив представляет собой множество значений, которыми можно оперировать как группой, так и с отдельно каждым значением.

  22. Каким образом можно записать всё это дело в один массив?

Комментарии запрещены.