2 u013303743 u013303743 于 2014.01.17 15:14 提问

为什么数组初始化为0比数组初始化为1要小?

比如
int arr[1000000]={0};

int main()
{
return 0;
}
写一个这样的代码,生成的exe文件比int arr[1000000]={1};的要小
为什么?

3个回答

tlxzsz
tlxzsz   2014.01.17 17:07

因为数组所有元素的默认值都是0。所以int arr[1000000]={0};相当于只记录了arr数组的地址 指向一片没用的内存区。

CSDNword
CSDNword   2015.07.30 17:42

可能和链接阶段机器 初始化过程有关。

shen_wei
shen_wei   Ds   Rxr 2015.10.14 14:04

int arr[1000000]={0}; 相当于申请了一个数组地址,
int arr[1000000]={1}; 相当于申请了一个数组空间并初始化值。。

u013303743
u013303743 哇,真的是这样吗?
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
<c语言>如何将数组初始化为0?
转载自:http://www.cnblogs.com/programnote/p/4719078.html 如何将数组初始化为全0? C语言中,声明数组的语句: int arr[100]; 这样声明得到的数组里面的存储的是随机的我们不知道的数据,对用户来说就是垃圾。有许多情况我们要将数组初始化为全零的情况才能进行其他操作。 最简单的方法就是用一个循环吧数组所有
关于数组的初始化是否为0
在我对数组初始化的时候首先想到的就是全部初始化: for(int i=0;i {       a[i[=0; } 这样的话感觉也太浪费了,一共进行了100次赋值操作,就想起来说“数组未赋值的自动赋值为0”,于是,没有初始化的情况下进行输出: 输出时乱码。可见系统没有自动赋值。   然后手动进行赋值一个0: 已经全部是0了,我试着给前几个赋值: 已经赋值的是正确值,没
【C#】自定义数组默认初始化
自定义数组初始化public class ObRoleMessage : MessageBase { public bool isKh; public int id; } private ObRoleMessage[] CollectRoleMsg() { var roleMsg = ObGetMessage.Instance._dicObRole
为什么memset不能将数组元素初始化为1?(急)
在C++中 memset() 可以将数组每个元素初始化为-1 0 false true 这个我们经常用,是可以的,但是昨天将数组元素初始化为1 就出错了。全部变成了168009!不知道是怎么一回事?大虾们能否给指点迷津? 很简单memset是一个字节一个字节的设置,把一个int的每个字节都设置为1,也就是0x01010101,十进制就是16843009 前段项目中发现一个问题,程序总是
如何将数组初始化为全0?
如何将数组初始化为全0? C语言中,声明数组的语句: int arr[100]; 这样声明得到的数组里面的存储的是随机的我们不知道的数据,对用户来说就是垃圾。有许多情况我们要将数组初始化为全零的情况才能进行其他操作。 最简单的方法就是用一个循环吧数组所有元素设置为0: int arr[100]; int i = 0; for(i = 0 ; i 100 ; i
字符串数组初始化相关问题总结
C字符串数组初始化相关问题总结 在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串。总结起来有以下三种方式: (1) char str[10]="";(2) char str[10]={'\0'};(3) char str[10]; str[0]='\0'; 第(1)(2)种方式是将str数组的所有元素都初始化为'\0',而第(3)种方式是只将str数组
C++中数组的初始化
今天在改大一学生的C++作业时,有个学生这么给数组初始化: array[8] = {0}; 直觉上觉得这样不对,因为C++里不允许用这种形式给所有的元素赋值。但是试了一下,的确是给所有的数组元素初始化为0了。 于是回忆了一下数组初始化的规定。在C++中,利用花括号给数组初始化,如果花括号中给的初始值的个数不够,则会自动将未给出初始值的元素赋0。因此这样的赋值在结果上对的。例如 array[
c怎么把数组初始化为0(数组很大)
如果是初始化,只要定义第一个元素为0,后面就全为0了,如 int a[SIZE] = {0}; 如果是在定义以后想全部赋为0,用memset()函数是比较快的。 如: int a[SIZE]; memset(a, 0, sizeof(int)*SIZE);
java 数组默认初始化
java 在声明了一个数组,并为其分配好存储空间后,未赋值之前会默认对其初始化: 整形数组 默认初始值为0; 布尔数组默认初始值为 false; String 数组以及 对象数组初始值为 null.
C/C++数组初始化的一些误区
以前我这样初始化一个数组,并自我感觉良好:int a[5] = { 0 }; // 全部初始化为0这种简单的写法让我非常爽,于是我又想把数组全部初始化为1:int a[5] = { 1 }; // 我想全部初始化为1直到十分钟前,我都以为这句代码确实能够将5个元素全部初始化为1,但事实跟我想的完全不同!(基础的东西革命的本钱,疏漏不得啊) 全部初始化为0的那行代码确实是没问题的,可以