gpt4 book ai didi

c++ - 数组在函数中作为参数传递并被访问,那么为什么函数返回后数组的值会被修改呢?

转载 作者:行者123 更新时间:2023-11-28 01:24:44 27 4
gpt4 key购买 nike

为什么 main 函数中的 arr[0] 产生与我代码中用户定义函数中的 arr[0] 不同的输出?为什么 main 函数中的 arr[0] 给出输出 5?

我尝试通过指针理解它,但仍然没有理解。

void fun(int a[]){
a=a+1;
cout<<a[0]<<" ";}
int main(){
int arr[3]={5,10,15};
fun(arr);
cout<<arr[0]<<" ";
cout<<arr[1]<<" ";
return 0;}

I expect output to be 10 10 15,but the actual output is 10 5 10

最佳答案

在你的函数中,a 是一个指针。在您的程序中,a 指向 arr 的第一个元素。您递增 a,所以现在它指向 arr 的第二个元素。到目前为止这么简单。

但是a的改变对arr没有任何影响。 arr 仍然是一个包含三个元素的数组,fun 中发生的任何事情都不会改变它。

关于c++ - 数组在函数中作为参数传递并被访问,那么为什么函数返回后数组的值会被修改呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372716/

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