В C массивы передаются в качестве указателей. Структуры могут передаваться в функции либо по значению, либо по адресу (указателю). Есть ли какая-то конкретная причина, по которой мы не можем передать массив по значению, но мы можем передать structre по значению?Передача массивов по отношению к структурам к функциям
3
A
ответ
6
В C, все передается по значению. Существует другое правило, в котором говорится, что в большинстве контекстов имя массива эквивалентно указателю на его первый элемент. Передача массива функции является таким контекстом.
Итак, особый случай заключается не в том, что массивы передаются по ссылке, особый случай - the rule about arrays decaying to pointers. Это дает впечатление, что массив передается по ссылке (что это действительно так, но теперь вы знаете почему!)
Сообщение в моей ссылке выше объясняет более подробно о типе массива в разных контекстах.
Смежные вопросы
- 1. Передача функций к функциям
- 2. Перемещение по структурам внутри массивов
- 3. IOS - Передача блоков к функциям
- 4. Передача GSL-массивов другим функциям
- 5. Агрегатная функция по отношению к светлому отношению
- 6. Dojo по отношению к CSS3
- 7. Передача обнуляемого (целочисленный) к югу или функциям
- 8. Передача переменного подключения к функциям - PDO PHP
- 9. Что именно делает этот синтаксис? (по отношению к структурам c-стиля)
- 10. Img по вертикали по отношению к ul?
- 11. Инкапсулирующий доступ к аналогичным структурам
- 12. Python: передача параметров по функциям
- 13. Фильтр Active Record по отношению, но не к самому отношению
- 14. Время вычисления по отношению к числу операций
- 15. Сортировка списка по отношению к другому
- 16. Fade div по отношению к прокрутке
- 17. конкатенации строк по отношению к РЕГИСТРИРУЙТЕСЬ
- 18. Функция шага по отношению к сигмоидной функции
- 19. рассчитать ускорение по отношению к истинному северу
- 20. Как разместить содержимое по отношению к ячейке?
- 21. JS: querySelectorAll по отношению к z-индексу
- 22. выведение DIV по отношению к YOffset позиции
- 23. Отцентрируйте строку по отношению к размеру окна?
- 24. Получение подсчета результата по отношению к колонке
- 25. JSON Group По отношению к его значению
- 26. Закрытие функции по отношению к вызываемому классу
- 27. Вычисление угла по отношению к опорной линии
- 28. Путь по отношению к углу изображения
- 29. Понимание virtualenv по отношению к python
- 30. Обход дороги BSP по отношению к положению?
Указатели передаются по val. int * p1, int * p2; p1 = p2; здесь нет ссылок. адрес копируется с p2 на p1. –
Да, указатели передаются по значению, как и все остальное. Для массивов * эффект * выглядит так, как будто они переданы по ссылке, но из-за «правила» о массивах, распадающихся на указатели. Конечно, значение указателя первого элемента массива передается по значению, но в этом случае это не имеет значения. –
Спасибо Alok! Объяснение в указанном сообщении было очень полезно – cppdev