C存储类型

存储类型

1. 什么是存储类型?
例如:
	{
		auto int a;
	}

其中auto就是存储类型,表明这个整型变量a是动态存储的。

2. 存储类型的作用是什么?

存储类型决定变量以什么样的方式存储在内存中,它决定了程序中变量/函数的作用域和生命周期。

2.1 作用域

程序的执行范围

2.2 生命周期

从开辟空间开始到释放空间这段时间;

3. 有哪几种存储类型?

auto:动态存储方式。

函数的局部变量默认是auto存储类型、未加static声明的局部变量和函数的形参也是auto存储类型。在函数调用时系统会给他们分配存储空间,在函数调用结束后会自动释放这些空间。

static:静态存储方式。

1.static修饰局部变量时,延长了局部变量的生命周期,存放在静态区,只会被初始化一次

2.static修饰全局变量时,限制了全局变量的作用域,只能在本文件内使用。全局变量本身就是静态的存储方式,加了static之后存储方式上也无不同,静态全局变量和全局变量的区别就是作用域不同,全局变量的默认作用域是整个程序,静态全局变量的作用域限制在声明它的文件内。

3.static修饰函数时,限制了函数的作用域,只能在本文件内使用

extern

即全局变量的外部表现形式,是在函数外部定义的变量。全局变量的作用域为从定义开始到源文件结束。exern对该变量作外部变量声明,扩展变量作用域。

例如:
a.c

#include <stdio.h>
int a;
int main()
{
	a = 1;
	return 0;
}
b.c

#include <stdio.h>
extern int a;
int main()
{
	a = 2;
	return 0;
}

此时b.c就引用了这个全局变量a。

register:

寄存器存储类型可以提高c语言的执行效率,即,将局部变量的值存入cpu的寄存器中。需要注意的是!只有动态存储的变量(自动局部变量和形参)才可以作为寄存器变量来存储,局部静态变量不可以定义为寄存器变量。计算机的寄存器数目是有限的,所以不能定义任意多个寄存器变量。

用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个字),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。

例如:
{
	register int a;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值