当前位置:首页 » 存储配置 » 隐含存储类别

隐含存储类别

发布时间: 2023-08-19 08:11:10

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

函数的存储类型指的是其他文件模块可否访问,其类别可以是extern或static。

static是指该函数只能被本源程序文件道中的模块访问。extern是指可被本源程序文件外的模块访问。

C语言中函数的存储类型隐含为版全局的,因此默认为extern。

函数内定义的变量,默权认作用域在本函数内,即其类型是auto。

(1)隐含存储类别扩展阅读:

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可以)

Ⅱ 【求助c语言】,凡是函数中未指定存储类别的全局变量,其隐含的存储类别为

全局变量其默认储存类型都是extern

而局部变量的默认储存类型是
auto,
函数中声明的变量是局部变量,所以原题中说
“函数中未指定存储类别的全局变量”
这句本身就有问题。
记着:
全局变量
extern
局部变量
auto

Ⅲ 函数的隐含存储类别是()

函数的存储类型指的是其他文件模块可否访问,其类别可以是extern或static。

static是指该函数只能被本源程序文件道中的模块访问。extern是指可被本源程序文件外的模块访问。

C语言中函数的存储类型隐含为版全局的,因此默认为extern。

函数内定义的变量,默权认作用域在本函数内,即其类型是auto。

(3)隐含存储类别扩展阅读:

在C语言中,提供了四种存储类型的存储说明符:auto、Register、Extern和static。这四个存储类别说明符有两个存储术语:自动存储术语和静态存储术语。

“自动”和“寄存器”对应的是自动存储周期。具有自动存储周期的变量在进入声明变量的块时被创建,在块活动时存在,在块退出时被撤销。在函数中定义的变量成为局部变量。在一些C教科书中,局部变量被称为automatic,这与使用可选关键字auto定义局部变量的做法一致。

Extern通常用于变量声明:在*中的另一个文件中引用全局变量。在*.h中应该使用extern来声明全局变量。

Ⅳ c语言中,函数的隐含存储类别及形参的默认存储类别分别是

c语言中,函数的隐含存储类别是extern
形参的默认存储类别是auto

Ⅳ C语言中函数隐含存储类型是什么

函数的隐含存储类型是extern,按照c语言的原则,函数隐含为全局都可以访问,因此默认为extern,而auto只用于变量,是变量的隐含存储类型。

Ⅵ C语言中,实参的隐含存储类型是 形参的隐含存储类型是 A、auto B、static C、extern D、register

答案都选A:上面几位胡说霸道。
不是static 形参存储类型只有两种可能,一是auto类型,而是register类型。我给你细细解说
auto 就是堆栈存储 而register的是cpu内部寄存器存储
具体函数的形参采用那种存储方法,这和函数的“调用规则(calling convention)”有关。
调用规则主要设计参数的传递,入栈顺序,寄存器传参,函数返回值的存储和清栈者,调用规则主要有 cdecl stdcall thiscall fastcall等等。栈是函数调用必需的数据结构。你可以在函数声明是注明函数的调用规则:如 int cdecl add (int a,int b) 。 注意函数有默认的调用规则,所以你再写程序时,没有必要注明调用规则。你此外还可以添加编译选项修改调用规则。
cdecl : (c/c++语言默认的调用规则):堆栈传参参数,因此是auto类型。
stdcall :有叫做pascal,WINAPI,这个调用规则出现在windows的API函数中。它也采用堆栈传递参数。
thiscall:类中的函数的调用方式:参数传递和编译器有关 Windows VC中 this指针用ECX寄存器存储,而unix gcc中 this用栈存储。其他参数也是用栈存储。
fastcall:用寄存器存储部分参数加快函数调用,其他参数用栈存储。
所以,没有隐含的存储类型,形参的存储类型和调用规则有关。但是如果真要学究般的考虑这个问题,则答案选A,因为C语言函数的默认调用方式是cdecl,它的参数传递只采用了栈,因此是auto(答案A)
而实参的存储类型可以是A,B,C,D四种,隐含的类型(也就是你在定义变量是,不指明存储类型)是auto(答案A)

Ⅶ C语言中,函数的隐含存储类型是:A. auto B.static C.extern D.register

C。

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

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

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

如:

extern int func(void){

return 0;

}

int func(void){

return 0;

}

是等价的,另外

extern int func(void);

int func(void);是等价的。

(7)隐含存储类别扩展阅读:

函数调用的一般形式为:

函数名(实参表列);

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

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

网络-c函数

热点内容
黑苹果idea编译慢 发布:2025-02-01 13:45:30 浏览:548
c和linux 发布:2025-02-01 13:39:38 浏览:175
android实现列表 发布:2025-02-01 13:38:06 浏览:102
安卓手机为什么会出现横条 发布:2025-02-01 13:33:38 浏览:625
jqueryajax提交文件上传 发布:2025-02-01 13:32:03 浏览:689
没连上wifi如何修改wifi密码 发布:2025-02-01 13:20:42 浏览:758
绝对赛车3安卓在哪里下载 发布:2025-02-01 12:42:30 浏览:718
mysql修改数据库字符 发布:2025-02-01 12:37:52 浏览:570
阿里云服务器出厂密码是多少 发布:2025-02-01 12:35:43 浏览:668
手机传文件服务器和ip地址 发布:2025-02-01 12:15:01 浏览:660