int s[2];
printf("%d",s[1]);
输出不是0吗?
8 个解决方案
#1
这个不一定,好像依赖于具体的编译器和系统
#2
取决于所用编译器
我知道TC下的基本不是,所以变量最好自己初始化
我知道TC下的基本不是,所以变量最好自己初始化
#3
如果数组是局部变量,那么是任意值
#4
一般是分配的内存里的原有数据
#5
编译的环境不一样,初始的数值应该不同。
如果要全初始化为0;
可以写成 int s[2]={0,0};
在VC下应该也可以写成 int s[2]={0};
如果要全初始化为0;
可以写成 int s[2]={0,0};
在VC下应该也可以写成 int s[2]={0};
#6
全局,静态变量,一般默认为0;
局部变量在栈上,取决于此处原来的数据,如果不初始化的话;
动态变量在堆上.
局部变量在栈上,取决于此处原来的数据,如果不初始化的话;
动态变量在堆上.
#7
正是如此
一般来说 全局变量、静态变量处于数据区,默认初始化为0 (如果指定初始值,则为指定的值)
而局部变量处于堆栈区,其数值是随机的,即当时内存中的值。
总体来说
不要利用编译器的这种默认原则
而是应当显示的指定
必要的初始化不是笨拙
而是规范
#8
如果s是全局变量,那么s就是一个未初始化全局变量,程序加载后会被初始化为全0
如过s是局部变量,那么就是不确定的,需要自己初始化或赋值
#1
这个不一定,好像依赖于具体的编译器和系统
#2
取决于所用编译器
我知道TC下的基本不是,所以变量最好自己初始化
我知道TC下的基本不是,所以变量最好自己初始化
#3
如果数组是局部变量,那么是任意值
#4
一般是分配的内存里的原有数据
#5
编译的环境不一样,初始的数值应该不同。
如果要全初始化为0;
可以写成 int s[2]={0,0};
在VC下应该也可以写成 int s[2]={0};
如果要全初始化为0;
可以写成 int s[2]={0,0};
在VC下应该也可以写成 int s[2]={0};
#6
全局,静态变量,一般默认为0;
局部变量在栈上,取决于此处原来的数据,如果不初始化的话;
动态变量在堆上.
局部变量在栈上,取决于此处原来的数据,如果不初始化的话;
动态变量在堆上.
#7
正是如此
一般来说 全局变量、静态变量处于数据区,默认初始化为0 (如果指定初始值,则为指定的值)
而局部变量处于堆栈区,其数值是随机的,即当时内存中的值。
总体来说
不要利用编译器的这种默认原则
而是应当显示的指定
必要的初始化不是笨拙
而是规范
#8
如果s是全局变量,那么s就是一个未初始化全局变量,程序加载后会被初始化为全0
如过s是局部变量,那么就是不确定的,需要自己初始化或赋值