По сути, для этого есть три причины.
Сокращение использования памяти
Каждый раз, когда вы вызываете функцию, аргументы копируются и передаются.Это не имеет большого значения, когда вы передаете номера.Однако, когда вы имеете дело с большими порциями памяти, такими как объекты, структуры, массивы и т. Д., Это становится очень дорогим.
Таким образом, все сложные типы обычно передаются как указатели.Если вы разбрасываете объекты, вы всегда работаете с указателем.
В этом случае следует использовать квалификатор const
, чтобы указать, что переменная не будет изменена.
Изменитьаргумент
Иногда полезно изменить переданный аргумент, хотя этого следует избегать как плохого стиля.Лучший пример, который я считаю, это изменение массива, например, функции push()
.Другой - это изменение объектов-членов или когда вы хотите вернуть несколько значений из функции.
Обратите внимание, что это может быть источником ошибок.Если вы изменяете переданную переменную, из названия функции должно быть очевидно, что это то, что вы делаете.
Низкоуровневый доступ к памяти
Все, что напрямую работает с памятью, будет хотеть прямогодоступ к указанной памяти.Стандартная практика на C, но менее распространенная на C ++.Посмотрите на функции, такие как memcpy()
и что-нибудь еще от <string.h>
.