使用数组内部函数。对函数内部的数组所做的更改对其他函数不可见

时间:2020-04-13 08:27:05

标签: c++ arrays gcc

我在 main()中声明了一个数组,并且没有初始化该数组,而是通过将其传递给函数来打印该数组。运行该程序时,它输出的值相同。
众所周知,在声明数组之后,将使用随机值对其进行初始化。然后它如何一直打印1,2,3,4,5,......

void print(int ar[],int n){
    for(int i=0;i<n;i++)
        cout<<ar[I]<<" ";
    cout<<endl;
}

输出: 0 1 2 3 4
当我使用for循环在 main() 中打印数组时,我得到了随机值。

int main(){
    int ar[5]={0};
    for(int i=0;i<5;i++)
       cout<<ar[i]<<" ";
}

输出: -2 6422280 1978757101 4201168 6422352
但是,当我在函数内部对该数组进行更改时,则它并未反映该函数外部的更改。

#include<bits/stdc++.h>
using namespace std;
void flush(int ar[],int n){
    for(int i=0;i<n;i++)
        ar[i]=0;
}
void setar(int ar[],int n){
    for(int i=0;i<n;i++)
        ar[i]=1;
}
void print(int ar[],int n){
    for(int i=0;i<n;i++)
        cout<<ar[i]<<" ";
    cout<<endl;
}
int main(){
    int ar[5]={0};
    flush(ar,5);
    print(ar,5);
    setar(ar,5);
    print(ar,5);
}

我们知道数组是通过引用传递的,因此在函数内部进行的更改也应该在函数外部可见。 系统: Windows 10
gcc编译器
VSCode工作室
C ++ 14

1 个答案:

答案 0 :(得分:3)

好吧,在打印功能中,它的作用是打印整数“ i”的值,而不是数组的值。 因此,应该打印ar [i]而不是打印“ i” cout<<ar[i]<<" ";