重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
c语言中的存储类型有auto, extern, register, static 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区、BBS区、栈区、堆区。
公司主营业务:成都网站制作、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出勐腊免费做网站回馈大家。
1. auto存储类型
auto只能用来标识局部变量的存储类型,对于局部变量,auto是默认的存储类型,不需要显示的指定。因此,auto标识的变量存储在栈区中。
2. extern存储类型
extern用来声明在当前文件中引用在当前项目中的其它文件中定义的全局变量。如果全局变量未被初始化,那么将被存在BBS区中,且在编译时,自动将其值赋值为0,如果已经被初始化,那么就被存在数据区中。全局变量,不管是否被初始化,其生命周期都是整个程序运行过程中,为了节省内存空间,在当前文件中使用extern来声明其它文件中定义的全局变量时,就不会再为其分配内存空间。
3. register存储类型
声明为register的变量在由内存调入到CPU寄存器后,则常驻在CPU的寄存器中,因此访问register变量将在很大程度上提高效率,因为省去了变量由内存调入到寄存器过程中的好几个指令周期。
4. static存储类型
被声明为静态类型的变量,无论是全局的还是局部的,都存储在数据区中,其生命周期为整个程序,如果是静态局部变量,其作用域为一对{}内,如果是静态全局变量,其作用域为当前文件。静态变量如果没有被初始化,则自动初始化为0。静态变量只能够初始化一次。
函数的存储类型指的是其他文件模块可否访问,其类别可以是extern或static。
static是指该函数只能被本源程序文件道中的模块访问。extern是指可被本源程序文件外的模块访问。
C语言中函数的存储类型隐含为版全局的,因此默认为extern。
函数内定义的变量,默权认作用域在本函数内,即其类型是auto。
扩展资料:
C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。
其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。
extern用在变量声明中常常有这样一个作用:要在*.c文件中引用另一个文件中的一个全局的变量,那就应该放在*.h中用extern来声明这个全局变量。
extern用于变量的用法:
1、extern int a;//声明一个全局变量a
2、int a; //定义一个全局变量a
3、extern int a =0 ;//定义一个全局变量a 并给初值。一旦给予赋值,一定是定义,定义才会分配存储空间。(注意:经过测试在GCC中,这样定义变量是不能通过编译的,而在VS2013可以)
参考资料来源:百度百科——extern
参考资料来源:百度百科——auto
四种变量存储类型。说明符如下:
auto static extern register
一、auto
auto称为自动变量。
局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进
行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上
从来不用。
二、static
static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。
1. 静态局部变量
它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它
函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。
2. 静态全程变量
Turbo C将大型程序分成若干独立模块文件分别编译, 然后将所有模块
的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护。静态
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与
全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用,
而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。
三、extern
extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要
被其它文件使用。因此, 必须将全程变量通知每一个程序模块文件, 此时可用
extern来说明。
四、register
register称为寄存器变量。
打字不易,如满意,望采纳。
C。
C语言规定,只要在定义函数时不进行存储类型的显式说明,函数的存储类型就隐含为外部类型,即extern型,外部类型允许其他文件中的函数调用。
实际上函数的声明和定义都不需要添加extern关键字,在实际使用的时候也最好不要添加关键字。
如果一个函数是不会被其它文件调用的,那么这个函数应该被声明成static的。
如:
extern int func(void){
return 0;
}
跟
int func(void){
return 0;
}
是等价的,另外
extern int func(void);
跟
int func(void);是等价的。
扩展资料:
函数调用的一般形式为:
函数名(实参表列);
如果是调用无参函数,则"实参表列"可以没有,但括弧不能省略。如果实参表列包含多个实参,则个参数间用逗号隔开。实参与形参的个数应相等,类型应一致。
实参与形参按顺序对应,一一传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序
参考资料:
百度百科-c函数
c语言中,函数的隐含存储类别是extern
形参的默认存储类别是auto
函数的存储类型指的是其他文件模块可否访问,其类别可以是extern或static。
static是指该函数只能被本源程序文件道中的模块访问。extern是指可被本源程序文件外的模块访问。
C语言中函数的存储类型隐含为版全局的,因此默认为extern。
函数内定义的变量,默权认作用域在本函数内,即其类型是auto。
扩展资料:
在C语言中,提供了四种存储类型的存储说明符:auto、Register、Extern和static。这四个存储类别说明符有两个存储术语:自动存储术语和静态存储术语。
“自动”和“寄存器”对应的是自动存储周期。具有自动存储周期的变量在进入声明变量的块时被创建,在块活动时存在,在块退出时被撤销。在函数中定义的变量成为局部变量。在一些C教科书中,局部变量被称为automatic,这与使用可选关键字auto定义局部变量的做法一致。
Extern通常用于变量声明:在*中的另一个文件中引用全局变量。在*.h中应该使用extern来声明全局变量。