十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
函数的隐含存储类型是extern,按照c语言的原则,函数隐含为全局都可以访问,因此默认为extern,而auto只用于变量,是变量的隐含存储类型。
青铜峡网站建设公司成都创新互联公司,青铜峡网站设计制作,有大型网站制作公司丰富经验。已为青铜峡上千提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的青铜峡做网站的公司定做!
c语言中的存储类型有static 、auto、extern、及register,函数默认的存储类型应该是extern,意思是具有外部链接性的。一般来说,会通过extern来声明函数。比如下面的代码,在1.c中定义一个函数,函数的声明写在1.h头文件中,在2.c中通过添加1.h的头文件,来声明及调用函数f()。
//1.c
void f() { ; }
//1.h
extern void f();
//2.c
#include "1.h"
int main() { f();}
1. 代码本身是存储在内存的代码段中的,而函数没有说存储的概念,函数调用时是通过栈来实现的。
2.在函数体内声明的变量在默认情况下都是auto存储类型
在代码块之间传递信息的一种方法就是使用外部变量。当一个变量在函数的外部被声明时,安的存储空间是永久分配的,安人存储类型是extren.外部变量的声明看上去和函数或代码块内部所声明的变量一样。外部变量对于它之后的所有函数都有效。在代码块或函数后,外部变量仍然存在。
3.static的基本用途是允许一个局部变量在重新进入代码块时能够保持原来的值。这和自动变量形成了鲜明的对比,自动变量在代码块时会被销毁,再次进入这个代码块时,它必须重新进行初始化。
4.egister存储类型告诉编译器相关的变量应该改量存储在高速度的寄存器中。使用register存储类型的目的一般是为了提高执行速度,但是,register声明只是向编译器所提出的“建议”,并非强制要求。
函数的存储类型指的是其他文件模块可否访问,其类别可以是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有透彻的理解,绝对回答不清楚!
推荐的参考资料:C Primer Plus ,其中有一章专门讲解这个;
在理解C的存储类说明符之前,首先要搞懂的概念有:作用域、生存周期、链接属性
C中存在如下的作用域:代码块作用域、文件作用域
C中变量的生存周期:自动生存周期(自动变量)、静态生存周期(静态变量,在程序运行期间始终存在)
C中变量(函数)的链接属性分为:静态连接属性、自动链接属性,由static关键字标志
C中的存储类说明符实际上是上述属性的不同组合(此处只针对变量而言):
auto 具有代码块作用域,自动生存周期,外部或者内部链接属性
register 具有代码块作用域,自动生存周期,外部或者内部链接属性
static 具有代码块或者文件作用域、静态生存周期、内部链接
extern 具有文件作用域(该关键字用于全局变量)、静态生存周期、外部链接
以上措辞或有不严谨之处,详情请参考参考资料()!