通常情况下,当我们通过数组名传递数组时,它是按地址调用的。这意味着如果我们在
那么,如果我想将数组作为函数的参数传递,并在
例如:
main()
之外更改数组的任何值,它将反映在main()
中。那么,如果我想将数组作为函数的参数传递,并在
main()
中调用它,以便该函数中的任何更改都不会反映在main()
中,我应该怎么做?例如:
void Foo(int arr[]) //takes an integer array `arr` as argument
{
// do something with `arr
}
int main()
{
int abc[]={5,1,2,9};
//do something to pass `abc` inside `Foo` so that changes inside `Foo` doesn't change the value of `abc` array.
}
现在我想按值将abc
数组传递给Foo
。
Foo
函数内部使用memcpy
呢? - Ry-//takes an integer array arr as argument
" 其实不是,它接受一个int *
。在定义函数参数的上下文中,T t[]
和T * t
两者是等价的。 - alk