通过值调用更改数组元素

Sha*_*dhi -3 c++ arrays call-by-value

我将数组元素传递给函数.此函数为数组的每个元素添加5.我也传递一个整数并向它添加5 ...即使它是一个'按值调用'函数,整数的值main()也不会改变(这是预期的)但是数组元素确实改变了......

我不知道怎么样和为什么?

#include <iostream>

using namespace std;

void change(int x[],int y);

int main()
{
    int sharan[]={1,2,3,4};
    int a=10;
    change(sharan,a);
    for(int j=0;j<4;j++)
    {
        cout<<sharan[j]<<endl;
    }
    cout<<endl<<"a is : "<<a;
    return(0);
}

void change(int x[],int y)
{
    for(int i=0;i<4;i++)
    {
        x[i]+=5;
    }
    y+=5;
}
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 5

数组衰减到指针,

void change(int x[],int y) 相当于 void change (int *x, int y )

x[i] += 5;

你正在改变地址的内容 x+i

y=5;inside change基本上更新了y其地址未传递的本地副本,因此不存在yafter的实际值的修改change