静态变量编译阶段
A. c语言中静态变量和外部变量的初始化是在____阶段完成的。
静态变量是在编译阶段就完成初始化的。但这个外部变量有点。。有些确实是在编译期完成的,但有些也不是啊。。
B. 什么是静态,什么是动态
静态就是在编译阶段就形成的,比方静态字段,在编译前就需要赋值。
动态就是在运行阶段才形成的,一般不加Static关键字的就是动态的,动态的可以等到运行时才赋值,比方动态字段你可以等程序跑起来了才用cin输入,静态的一定要先赋值,而且静态字段的生命周期从程序开始到结束,动态字段的生命周期有域的,比方在函数里定义的动态字段,生命周期就是在这个函数里,函数调用结束,这个动态字段就销毁了。
C. c语言中静态变量是怎么用的
c语言中静态变量作常量使用,用于存储常数。可用const,constant或final等关键字标识,其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区。
对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。
(3)静态变量编译阶段扩展阅读:
在函数内以static声明的静态局部变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。
一般来说,静态分配时存储空间于编译时在程序数据段分配,一次分配全程有效;而自动分配时存储空间则是于调用栈上分配,只在调用时分配与释放,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。
D. java中的全局变量和静态变量是在编译时分配内存还是在加载时分配内存
全局变量是在创建对象的时候分配内存的 创建对象过程为
分配空间。
递归的创建父类对象。
初始化成员变量。
调用构造方法创建一个对象。
静态变量是在类加载的时候分配空间的,静态变量和对象没有关系 是在JVM第一次读到一个类的时候加载信息的过程中分配空间的 加载过程为
1 .加载父类(如果父类已经加载过,则不在加载)。
2.初始化静态属性 。
3 .按顺序的初始化静态代码块 初始化的前提就是分配空间 。
而且静态变量在以后的创建对象的时候不在初始化 所以一般用静态来保存共享信息
E. C++中局部静态变量是在什么时刻产生(分配内存)在编译时,还是等运行到该变量的首次出现时
局部static 变量在程序运行的时候分配空间了,只不过作用域是局部的,生存期和全局变量一样到程序结束
F. 在C语言中,变量的初始化都是在编译阶段完成的.为什么错
char型相加,其实是将他的整形值相加,结果是一个整数,除非(char)强转。
在局部范围,局部变量是在栈中生存,而全局变量在静态存取,所以是不同的变量,怎么会相等。
关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'