#c #reference
#c #ссылка
Вопрос:
Если мы не хотим, чтобы значение array менялось в main
функции, что мы можем сделать? Например:
int func(int a[])
{
------
---
}
int main()
{
int a[100];
for (i = 0; i < 100; i )
scanf("%d", amp;a[i]);
func(a);
}
В этом примере значения, которые мы помещаем в массив в main
функции, заменяются в func
функции. Как этого избежать?
Ответ №1:
Да, массивы всегда передаются «по ссылке»; передаваемое значение является указателем на нулевой элемент массива.
Вы можете указать компилятору запретить изменения, сделав его const
:
int func(const int a[])
{
…
a[0] = 1; // Compiler error - attempt to modify constant array
…
}
Обратите внимание, что обычно хорошей идеей является передача размера массива (количества (используемых) элементов в нем) в качестве дополнительного аргумента функции:
int func(int n, const int a[n]) // C99 or later
int func(const int a[], int n) // Classic argument order