如何理解:编译时赋初值
昨天嫌没事把谭浩强那本书翻了翻,以下几句当年为了考试都不知看了多少遍。
现在却看不懂了,劳驾各位麻烦讲讲怎么回事
“对局部静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值”
“只有在存储在静态存储区中的数组才能初始化,这个初始化的处理是在编译过程中完成的”
“全局变量是在函数的外部定义的,编译时分配在静态存储区”
1。众所周知,静态存储区是内存中供用户使用的存储空间。编译时是怎么赋初值?,变量如何分配在静态存储区?我纳闷的是,我光编译,不运行,莫非也在内存中占据空间。可我的理解是,一个可执行文件,不运行,说什么也不会到内存中占空间的
2。如果编译时分配在静态存储区看成是一种事先约定,即程序一运行,变量才开始真正的分配在静态存储区。那么那个值事先存放在什么地方呢?
3。说说动态变量吧,比如int a = 5。这个5在程序没有运行时放在什么地方呢?,是不是和问题2中同一个地方。那么唯一的区别就是动态数据和静态数据存储的地方不同,那为什么要说是编译时赋的初值
4。那么编译时赋不赋初值又有何区别呢,晕了,我都不知道该怎么问了
不好意思,没学过编译原理和汇编语言。问的问题可能有点低级