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

问题描述

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

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

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

解决方案

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

解决方案二:

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

解决方案三:

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

时间: 2024-08-03 15:42:42

c-为什么数组初始化为0比数组初始化为1要小?的相关文章

C 语言中 初始化为0和1 的差别

仔细观察图 在test1.c中将数组的所有元素初始化为0 在test2.c中将数组的所有元素初始化为1 但是编译后二者的大小差距是不是太大了!值得注意啊! 要从内存的角度分析原因

函数模板 结构体数组-C++中带有数组参数的函数模板是否可以实例化为结构体数组类型来进行比较等操作?

问题描述 C++中带有数组参数的函数模板是否可以实例化为结构体数组类型来进行比较等操作? 不管什么类型的数组,都有一些类似的操作,因此可以使用函数模板实现代码复用.但是我在实现"查找"功能时不知道怎么处理结构体数组.要保证函数模板不仅适用于结构体数组,还适用于其他数组.求助各位大神! #include using namespace std; #define N 10 struct stu { int num; double score; }; /*查找:查找某元素,返回其下标*/ t

c++-C++ 6.0读入数组,数组的大小没办法确定

问题描述 C++ 6.0读入数组,数组的大小没办法确定 C++ 6.0读入数组,数组的大小没办法确定,所以希望数组不足的时候对它扩容,是使用memcpy么?但是效率会不会低呢? 解决方案 使用stl中的vector,直接push_back进去 解决方案二: 直接用vector就好啦 解决方案三: 为什么数组的大小不能确定?数组大小在定义时就已经确定了啊.不能确定的是动态数组吧

java 7-求第m个到第n个素数之间的素数和,求帮忙看下哪里错了 提取数组求和的时候总是在数组中出现0

问题描述 求第m个到第n个素数之间的素数和,求帮忙看下哪里错了 提取数组求和的时候总是在数组中出现0 public class All { public static void main(String[] args) { int a[] = new int[200]; //将前200个数中的素数提取出来放入数组a中 for(int i = 1 ; i < 200 ; i ++){ boolean isPrime = true; for(int k = 2 ; k < i ; k ++){ if

.NET 4.0中数组的新增功能

1.两数组是否"相等"? 在实际开发中,有时我们需要比对两个数组是否拥有一致的元素,例如,以下两个数组由于拥有相同的元素,因此被认为是相等的: int[] arr1 = new int[] { 1,2,3,4 }; int[] arr2 = new int[] { 1,2,3,4 }; 在.NET早期版本中,要实现上述数组比对功能,必须自己动手编写一个函数,在其内部使用循环语句逐个比较两个数组的对应元素,才知道这两个数组是否相等. 在.NET 4.0中,数组基类Array实现了一个新增

嵌入式-AT24CXX使用之前每一个字节都要先初始化为0吗,

问题描述 AT24CXX使用之前每一个字节都要先初始化为0吗, 怎么定义一个变量,吧这个变量给24cxx的某一个字节,而这个变量只执行一下,不然下一个再把这个变量给24cxx的时候,24cxx里面的数就又变了,只需要初始化一次, 解决方案 没看明白你想要表达什么意思,根据你的标题理解你想问AT24CXX使用之前是否初始化.AT24CXX是eeprom使用前不必初始化,直接写数据即可,如果你非要初始化为特定的值,可以再做AT24CXX初始化中添加一个函数,这个函数目的是初始化完毕iic,在初始化A

结构体中的柔性数组成员(数组长度为0成员)!

其实很早在看LINUX下就看到这个东西,后来在MFC内存池里同样也看到了类似的东西,还依照MFC写过一个类似的小内存池,(MFC用的是return this + 1)后来在李先静的<系统程序员成长计划>里看到了类似的定义,于是心里想着总结一下,结果发现网上已经有牛人总结的很好了,于是乎就转了过来,谢谢你们的分享,这是我前进的动力!同时,需要引起注意的:ISO/IEC 9899-1999里面,这么写是非法的,这个仅仅是GNU C的扩展,gcc可以允许这一语法现象的存在.但最新的C/C++不知道是

C++ 6.0浮点数组通过多线程计算秘制函数和均方差

问题描述 C++ 6.0浮点数组通过多线程计算秘制函数和均方差 C++ 6.0浮点数组通过多线程计算秘制函数和均方差,用多线程并发优化,属于密集程序么?怎么样才能CPU密集化? 解决方案 http://blog.csdn.net/zhandoushi1982/article/details/6041430

C++ 6.0字节数组使用stl或者vector怎么实现过滤和添加浮点数呢?

问题描述 C++ 6.0字节数组使用stl或者vector怎么实现过滤和添加浮点数呢? C++ 6.0字节数组使用stl或者vector怎么实现过滤和添加浮点数呢? 解决方案 vector<float> vec; vec.push_back(浮点数); ... 解决方案二: 用stl中的filter来过滤 解决方案三: 你描述的有问题...