John R. Shaw
Грифф, конечно, прав.
Никогда не передавайте массив по значению, если не указан его размер. Потому что массив, переданный функции, вырождается в указатель. Размер указателя-это размер памяти, необходимой для хранения указателя (зависит от реализации), а не размер массива. Таким образом, функция, получающая аргумент указателя, не имеет представления об объеме памяти, на который он указывает (будущая ошибка).
Я дам вам 3 варианта:
1) func(int arg[], int argn n);
2) func(int *arg, int argn n);
3) func(int arg[10]);
Только число 2 имеет смысл, а число 1-это в основном одно и то же. Номер 3 законен, но он ограничивает то, что может быть передано и исключено.
Я ненавижу слово "никогда", но я рекомендую вам никогда не использовать число 3, Если у вас нет очень явной причины для этого (аппаратные требования - очень низкий уровень).
John R. Shaw
Технически, это был бы номер 3. Это то, что "toni_1" думал, что он/она делает. Копинг по значению означает, что копия передается в стек, что и делает номер 3. То, что делал 'toni_1', сводилось к передаче указателя на исходный массив, что означает, что любое изменение массива в функции изменит оригинал. Номер 3 изменит только копию. Вот почему нам нужно указать постоянные переменные в наших аргументах (я говорю вам, где находятся данные, но вы не можете их изменить).
:) Рубикс - лучшее время 2.54 минуты (сейчас, понятия не имею).