关于数组初始化的一点问题

学术版

zhiyangfan @ 2021-08-07 17:27:56

众所周知,想将数组第 0 项初始化为 1 有这么两种方法:

  1. int fac[N] = {1};

  2. int fac[N]; fac[0] = 1;

我一直觉得这俩没啥区别,直到今天模拟赛我用了第一种,然后收获了 0 分的好成绩。发现CE了,提示信息是输出文件过大,然后我去本地编译了一下,发现编译了一分钟,而且输出文件有76MB(我平常就没注意过这个/wul) 。然后我改成第二种之后就过了,输出文件大小也正常了。

求一个大佬解释一下qwq


by invincible_summer @ 2021-08-07 17:29:37

@zhiyangfan 显然吧,卡常技巧;


by invincible_summer @ 2021-08-07 17:31:35

因为计算机的全局变量储存;

如果没有初始化复制,他就会直接创建数组,否则他得先打印你要初始化的元素,在打印一串 0(打印的总大小为数组大小);


by zhiyangfan @ 2021-08-07 17:32:38

@invincible_summer 谢谢谢谢,以前没注意过,实在没想到会差这么多/wul


|