C语言中,函数的隐含存储类别是 auto 还是 extern,为什么两种答案我都看到过

如题所述

函数的存储类型指的是其他文件模块可否访问,其类别可以是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

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-10
函数的存储类型指的是其他文件模块可否访问,其类别可以是extern或static。
static是指该函数只能被本源程序文件中的模块访问。extern是指可被本源程序文件外的模块访问。
C语言中函数的存储类型隐含为全局的,因此默认为extern。

函数内定义的变量,默认作用域在本函数内,即其类型是auto。本回答被提问者采纳
相似回答