c语言与变量
来源:互联网 发布:php的特点与优势 编辑:程序博客网 时间:2024/05/28 11:48
在C语言中根据变量存储位置的不同,把C语言中的变量分为三种,静态变量、动态变量以及寄存器变量。
变量存储位置不同生命周期不同
存储位置
变量类型
生命周期
普通内存
静态变量
存储在静态内存中,所有的全局变量都是静态变量,被static修饰的局部变量也是静态变量,生命周期发生改变,但是并没改变它的作用域,在程序运行前分配内存,在程序整个运行期间都存在,在程序运行结束后销毁和Java中的静态变量不一样,Java中的静态变量通过类名访问,在程序中放在一个静态的代码块中最先分配内存
运行时堆栈(自动分配,自动销毁)
自动变量
在函数中声明的时候被创建,在函数块结束后,就会销毁,函数被重新调用,都会被重新创建随机分配内存地址
硬件寄存器
寄存器变量
函数调用时,占用寄存器,调用完成后,释放寄存器给其他寄存器变量使用
默认情况所有的局部变量都是自动变量
void test(){
int i=10;
auto int i=10; //auto可以省略
};
void testSum(){
int a=0;
a++;
static int b=0; //虽然改变了b的生命周期,但是并没改变b的作用域
b++;
printf("a的值是%i,b的值是%i\n",a,b);
}
int main(int argc,const char * argv[])
{
for (int i=0; i<5; i++) {
testSum();
}
return 0;
}
执行结果;
a的值是1,b的值是1
a的值是1,b的值是2
a的值是1,b的值是3
a的值是1,b的值是4
a的值是1,b的值是5
寄存器变量,存储在硬件中也就是电脑CPU中,容量有限,高速存储,效率比内存更高,用register修饰的自动变量,
int main(int argc,const char * argv[])
{
register int k=10;
return 0;
}
注意:register不能修饰static变量,因为静态变量放在静态内存中,而且只能用定义int char 指针类型(void*),存储器有限,不能使用太多寄存器,如果频繁调用,就使用寄存器变量,如果寄存器饱和,那么定义的寄存器变量就会变成普通的自动变量
- c语言与变量
- C语言:变量与函数
- C语言 常量与变量
- c语言---变量与常量
- C语言数据类型与变量
- C语言常量与变量
- C语言常量与变量
- c语言变量与常量
- C语言-变量与常量
- C语言常量与变量
- C语言 常量与变量
- C语言变量与常量
- c语言变量名称与变量
- C语言深入理解 - 常量与变量
- C语言开发之变量与常量
- C语言命名空间与定义变量
- C语言 变量与指针 形象化解释
- C语言的变量与算术表达式
- Detecting and Probing the Camera(检测,探测相机)
- Effective C++ --1 让自己习惯C++
- Apache POI库操作Excel 2007文档
- RESTful架构风格
- Wb开发基础-Http1.0协议-客户端与服务器端的交互
- c语言与变量
- Android---控制多媒体应用程序的音量和播放
- How to get a path to a resource in a Java JAR file
- java中double类型变量保留小数点后两位的问题
- 轻松使用Hadoop RPC
- 摄像机成像、畸变模型(二)
- Anroid ListView分组和悬浮Header实现
- ios开发分页控件的相关操作
- 求X,Y的平均值