有一个C++的程序不明白,请教大家!

来源:百度知道 编辑:UC知道 时间:2024/05/18 03:56:24
#include<iostream>
using namespace std;

int array1[5]={1,2,3};
int array2[5];

int main(){
int array3[5]={2};
int array4[5];
cout<<"array1: ";
for(int i=0; i<5; ++i)
cout<<array1[i]<<" ";
cout<<"\narray2: ";
for(int i=0; i<5; ++i)
cout<<array2[i]<<" ";
cout<<"\narray3: ";
for(int i=0; i<5; ++i)
cout<<array3[i]<<" ";
cout<<"\narray4: ";
for(int i=0; i<5; ++i)
cout<<array4[i]<<" ";
cout<<"\n";
}

这个程序的运行结果是:

array 1: 1 2 3 0 0
array 2: 0 0 0 0 0
array 3: 2 0 0 0 0
array 4: 1245072 845597673 0 0 4198406

我不知道为什么array 4的结果是这样,我以为应该是:0 0 0 0 0。

定义在main()函数前的数组具有全局作用域,而定义在main()函数内的数组具有局部作用域;

具有全局作用域的变量若未明确指定初始化值,则自动初始化为0;具有局部作用域的变量则被初始化成随机值。

据我所知在变量为静态时会自动赋初值,你试一下用static或者改为全局变量,应该会自动赋为0;

变量在main函数里面定义为动态变量 并没用赋初值 系统会自动赋一随机数给变量