如果我们不想在main
函数中更改数组的值,我们可以做什么?
例如:
int func(int a[])
{
------
---
}
int main()
{
int a[100];
for (i = 0; i < 100; i++)
scanf("%d", &a[i]);
func(a);
}
在此示例中,我们在main
函数中放入数组的值将替换为func
函数。怎么避免这个?
答案 0 :(得分:3)
是的,数组总是'通过引用'传递;传递的值是指向数组的第0个元素的指针。
您可以通过将更改设为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