四种声明变量的区别(auto,static,register,extern)

auto、 register 、static、extern 声明存储类型的区别:

定义与声明:

声明:告诉编译器名称和类型,不分配内存,不赋初值

定义:为了给变量分配内存,可以为变量赋初值

1.auto:自动存储类型变量

A.默认变量类型,定义变量,不指定为声明类型,则默认为auto。
B.以auto声明的变量,编译器会自动分配存储空间,并在程序执行结束后自动释放。
C.自动变量只能在函数内部使用,它们的作用域仅限于所在的代码块。在函数执行结束后,自动变量将会被自动释放,其值也会随之消失。若声明为全局变量,则在该文件中有效。

2.static:静态存储变量

static:静态的,静止的------>私有(隐藏)
A.static声明的变量的作用域取决于声明位置
	全局:本文件
	局部:本函数
B.声明周期:程序或进程结束而终止
C.好处:
	隐藏变量或函数、隔离错误,有利于模块化程序
	保持变量内容的持久性
	默认初始化为0,同样全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00
D.static的用途
	1.声明全局变量,可限制该变量仅本文件可见
	2.声明局部变量,可延长生命周期,当该函数再次被调用时,变量的值是上次调用结束的值
	3.静态函数,表示该函数经在本文件中可见
	4.修饰类的成员为静态成员,表示该成员在本类中可见,多对象可共享
	5.类的静态函数,表示可直接通过类名访问该函数。

3.register:寄存器存储变量

声明为寄存器变量,表示将该变量的值存入寄存器。
注:
	1.声明为寄存器变量的类型应该是CPU寄存器所能接受的类型,寄存器变量是单个变量,变量长度应该小于等于寄存器长度。
	2.不能对寄存器变量使用取地址符“&”,因为该变量没有内存地址。
	3.尽量在大量、频繁操作时使用寄存器变量,且声明的变量个数应该尽量少。

4.extern:外部存储变量

extern:外面的、外部的,表示该变量在外部进行了定义,则必然是全局变量
A.使用其他文件的函数或者变量的方式:
	1.include头文件
	2.extern,可避免大量的头文件引入以及无关函数的引入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值