По умолчанию аргументы копируются (по значению). Изменение копии внутри функции не меняет оригинал. Для изменения передают указатель *T; копируется адрес, разыменование меняет исходную переменную. Для больших структур указатель избегает копирования.