gpt4 book ai didi

c - 将数组作为参数传递给 C 中的函数

转载 作者:行者123 更新时间:2023-11-30 16:38:04 25 4
gpt4 key购买 nike

我编写了一个包含数组作为参数的函数,并通过传递数组值来调用它,如下所示。

void arraytest(int a[])
{
// changed the array a
a[0] = a[0] + a[1];
a[1] = a[0] - a[1];
a[0] = a[0] - a[1];
}

void main()
{
int arr[] = {1, 2};
printf("%d \t %d", arr[0], arr[1]);
arraytest(arr);
printf("\n After calling fun arr contains: %d\t %d", arr[0], arr[1]);
}

我发现,虽然我通过传递值来调用 arraytest() 函数,但 int arr[] 的原始副本已更改。

您能解释一下原因吗?

最佳答案

当将数组作为参数传递时,这

void arraytest(int a[])

意思完全一样

void arraytest(int *a)

所以您正在修改main中的值。

由于历史原因,数组不是一等公民,不能按值传递。

关于c - 将数组作为参数传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com