Позвонить по ссылке или по стоимости?

Я только начал использовать C ++, с базой в C. Узнав о Call по ссылке, мне нужно знать, если в следующей функции я нашел онлайн:

int insertSorted(int arr[], int n, int key, int capacity)
{
if (n >= capacity)
return n;

arr[n] = key;
return (n+1);
}

,который используется для вставки в несортированный массив, будет ли затронут / изменен массив в основной функции? Так как arr[] Аргумент в функции не является ссылочной переменной, так как любые изменения в этой вызываемой функции отражаются в вызывающей функции? Это правильный код, если вообще? Я основываю свой вопрос на том факте, что вызов по значению создает копии переменных и изменяет их, а вызов по ссылке изменяет сами фактические переменные. Извините, если этот вопрос немного глупый.
Любая помощь в прояснении этой концепции была бы отличной.

Благодарю.

-1

Решение

arr фактически является указателем на массив. Таким образом, в вашем случае он действует как ссылка, а функция меняет массив arr указывает на.

Если вы хотите сделать это больше C ++, вы должны использовать std::vector<int> вместо int[] для вашего массива. std::vector имеет все функции массива в стиле C, но заботится об управлении памятью и фактическом количестве элементов.

В случае std::vector Вы действительно должны передать ссылку (std::vector &), в противном случае функция получит копию всего массива.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]