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

Python038

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

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

C。

C语言规定,只要在定义函数时不进行存储类型的显式说明,函数的存储类型就隐含为外部类型,即extern型,外部类型允许其他文件中的函数调用。

实际上函数的声明和定义都不需要添加extern关键字,在实际使用的时候也最好不要添加关键字。

如果一个函数是不会被其它文件调用的,那么这个函数应该被声明成static的。

如:

extern int func(void){

return 0

}

int func(void){

return 0

}

是等价的,另外

extern int func(void)

int func(void)是等价的。

扩展资料:

函数调用的一般形式为:

函数名(实参表列);

如果是调用无参函数,则"实参表列"可以没有,但括弧不能省略。如果实参表列包含多个实参,则个参数间用逗号隔开。实参与形参的个数应相等,类型应一致。

实参与形参按顺序对应,一一传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序

参考资料:

百度百科-c函数

auto 只是用于局部变量,register一定是auto

函数的存储类型指的是其他文件模块可否访问,按照C语言的原则,函数隐含为全局(本项目中)都可以访问,因此默认为extern,如果函数前面加上static则说明该函数只能被本源程序文件中的模块访问

所以答案就是C