如何理解:编译时赋初值
昨天嫌没事把谭浩强那本书翻了翻,以下几句当年为了考试都不知看了多少遍。
现在却看不懂了,劳驾各位麻烦讲讲怎么回事
“对局部静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值”
“只有在存储在静态存储区中的数组才能初始化,这个初始化的处理是在编译过程中完成的”
“全局变量是在函数的外部定义的,编译时分配在静态存储区”
1。众所周知,静态存储区是内存中供用户使用的存储空间。编译时是怎么赋初值?,变量如何分配在静态存储区?我纳闷的是,我光编译,不运行,莫非也在内存中占据空间。可我的理解是,一个可执行文件,不运行,说什么也不会到内存中占空间的
2。如果编译时分配在静态存储区看成是一种事先约定,即程序一运行,变量才开始真正的分配在静态存储区。那么那个值事先存放在什么地方呢?
3。说说动态变量吧,比如int a = 5。这个5在程序没有运行时放在什么地方呢?,是不是和问题2中同一个地方。那么唯一的区别就是动态数据和静态数据存储的地方不同,那为什么要说是编译时赋的初值
4。那么编译时赋不赋初值又有何区别呢,晕了,我都不知道该怎么问了
不好意思,没学过编译原理和汇编语言。问的问题可能有点低级
现在却看不懂了,劳驾各位麻烦讲讲怎么回事
“对局部静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值”
“只有在存储在静态存储区中的数组才能初始化,这个初始化的处理是在编译过程中完成的”
“全局变量是在函数的外部定义的,编译时分配在静态存储区”
1。众所周知,静态存储区是内存中供用户使用的存储空间。编译时是怎么赋初值?,变量如何分配在静态存储区?我纳闷的是,我光编译,不运行,莫非也在内存中占据空间。可我的理解是,一个可执行文件,不运行,说什么也不会到内存中占空间的
2。如果编译时分配在静态存储区看成是一种事先约定,即程序一运行,变量才开始真正的分配在静态存储区。那么那个值事先存放在什么地方呢?
3。说说动态变量吧,比如int a = 5。这个5在程序没有运行时放在什么地方呢?,是不是和问题2中同一个地方。那么唯一的区别就是动态数据和静态数据存储的地方不同,那为什么要说是编译时赋的初值
4。那么编译时赋不赋初值又有何区别呢,晕了,我都不知道该怎么问了
不好意思,没学过编译原理和汇编语言。问的问题可能有点低级
...全文
相关推荐
C语言第五章习题带答案.doc
对于以下说明语句的正确理解是B.将5个初值依次赋给a[0]至a[4],因为数组初始化时,元素的赋值是从下标0开始的。二、填空题6.
全国计算机二级C语言程序设计讲义一维数组和二维数组PPT教案学习.pptx
五、一维数组的初始化:数组初始化可以在定义时进行,即给数组元素赋予初值。有两种方式:1. 给所有元素赋初值,例如`int a[8]={0,1,2,3,4,5,6,7}`。2.
113-程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一...[定义].pdf
- **规则2**:为数组和动态内存赋初值。 - **规则3**:防止数组或指针下标越界。 - **规则4**:动态内存申请与释放需成对出现。
c++内存分配机制
针对这些问题,有以下编程规范:- 规则1:分配内存后立即检查指针是否为`NULL`。- 规则2:为数组和动态内存赋初值。- 规则3:避免数组或指针下标越界。
C语言中.h和.c文件解析.pdf
同样,如果在头文件中定义全局变量,并且将此全局变量赋初值,那么在多个引用此头文件的C文件中同样存在相同变量名的拷贝,关键是此变量被赋了初值,所以编译器就会将此变量放入DATA段,最终在连接阶段,会在DATA


