未在定义语句中赋初值的auto变量和static变量的初值都是随机值。请问这句话错在哪里?

如题所述

C语言标准里面,auto变量的初始值没有做要求,一般是随机的,它分到那块内存原来是什么,还是什么。

static变量是静态变量,如果定义时未对其赋初值,编译时系统对数值型static变量赋值为0,对字符型变量赋值空。

static的三条重要作用:

(1)最主要功能是隐藏。

(2)因为static变量存放在静态存储区,第二个作用是保持变量内容的持久。

(3)默认初始化为0。在静态数据区,内存中所有的字节默认值都是0x00。



扩展资料

全局变量的存在主要有以下一些原因:

1、使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不应该算什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。

2、使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样也快不了多少。

3、对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。

4、当全局变量与局部变量重名的时候,起作用的是局部变量,全局变量被屏蔽掉。

5、还可以用extern在函数外对全局变量声明,使全局变量的作用域从声明处到文件的结束。

6、全局变量的优先度低于局部变量。

总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使其名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对象的全局变量。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-13
出自《2011全国计算机二级C++笔试练习习题(3)》
显然这种说法是错误的,static变量是静态变量,程序启动时就在全局区分配了空间,而且被初始化为0或者空(NULL)本回答被提问者采纳
第2个回答  2012-12-13
auto变量只有调用的时候才赋值,调用结束就释放,所以无初值
第3个回答  2013-03-22
C语言标准里面,auto和static变量的初始值都没有做要求。
auto一般肯定是随机的,他分到那块内存原来是什么,还是什么。
static由于是静态的,一般加载的时候都初始化为0(大部分系统是这样的,并不绝对),如果是考试题,可以认为是随机的吧
第4个回答  2012-12-13
static变量的初值不是随机值追问

请问能再详细点吗?

追答

static 变量 初始值默认是0