C语言函数形参储存类型,c语言中形参的默认存储类型

函数的形式参数隐含的存储类型说明是

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

闵行网站建设公司成都创新互联公司,闵行网站设计制作,有大型网站制作公司丰富经验。已为闵行上千余家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的闵行做网站的公司定做!

c语言中形参的缺省存储类别是?

形参

或者说所有的变量,缺省的存储类别都是auto的。

C语言中四种存储类别

auto

static

extern

register

除非标了,否则都是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)

7、C语言中,形参的默认存储类别为。 (A)auto (B) static (C)register (D)extern

C。

在函数内部或复合语句内定义变量时,如果没有指定的存储类型或使用了auto说明符,系统就认为所定义的变量具有自动类别。

形参即函数的自变量,其初值来源于函数的调用。只有在程序执行过程中调用了函数,形参才有可能得到具体的值,并参与运算求得函数值。形参表相当于变量说明,但应特别注意:此处只能使用类型标识符,而不能直接使用类型。

用auto(或省略)来区分说明的局部变量。当执行进入局部变量所在的块时,在栈上为变量分配存储,退出块时,存储单元被回收。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。在函数内部定义的变量成为局部变量。

扩展资料:

1、register关键字提示编译器把局部变量或函数的形参尽可能放入CPU的寄存器中,以便快速访问。因此变量的字节长度不应该超过寄存器的长度。不要用取地址符()去获得此变量的内存地址。例如:

{

register int Miles;

}

2、static是全局变量的默认存储类。例如:

static int Count;

int Road;

main()

{

printf("%d\n", Count);

printf("%d\n", Road);

}

Count与Road两个变量都是默认的static存储类。

3、extern存储类是指全局变量可以被各个对象模块访问。使用extern关键字时,表示变量已经在别处定义,所以不能在此处初始化。

参考资料:

百度百科-形式参数

百度百科-存储类

C语言中形参的默认存储类别是

C语言中形参的默认存储类别是(A)auto (B) static (C)register (D)extern

解:

A.auto B.static C.register D.extern

A 的变量在堆栈里,自然是运行时

B 是静态变量

C 是寄存器变量,使用的是cpu的寄存器

D 是全局变量

BD都是放在数据段中的,编译的时候就已经确定了位置(有的编译器对b和d的处理不一样)


当前文章:C语言函数形参储存类型,c语言中形参的默认存储类型
分享路径:http://pwwzsj.com/article/dseogee.html