我在 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
答案 0 :(得分:3)
好吧,在打印功能中,它的作用是打印整数“ i”的值,而不是数组的值。
因此,应该打印ar [i]而不是打印“ i”
cout<<ar[i]<<" ";