Передача массивов против структур в функции - PullRequest
3 голосов
/ 19 января 2010

В C массивы передаются функциям как указатели. Структуры могут быть переданы в функции либо по значению, либо по адресу (указателю). Есть ли конкретная причина, по которой мы не можем передать массив по значению, но мы можем передать structre по значению?

1 Ответ

6 голосов
/ 19 января 2010

В C все передается по значению. Есть еще одно правило, которое гласит, что в большинстве случаев имя массива эквивалентно указателю на его первый элемент. Передача массива в функцию является таким контекстом.

Таким образом, особый случай не в том, что массивы передаются по ссылке, особый случай - это правило о массивах, распадающихся на указатели Это создает впечатление, что массив передается по ссылке (что он и есть на самом деле, но теперь вы знаете, почему!)

Пост в моей ссылке выше объясняет более подробно о типе массива в разных контекстах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...