当前位置:首页 » 服务存储 » c语言中隐含的存储类别
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中隐含的存储类别

发布时间: 2022-08-20 00:45:07

① 在c语言中函数的隐含存储类型是

什么是“函数的隐含存储类型”?
函数的本质就是n多机器指令的段落。如果你是指函数指针,那么函数指针无非就是储存一个函数的入口地址(机器指令段的第一条指令的地址),既然是地址,那只能是unsigned int类型。
还是详细解释一下你的那个问题吧?

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

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

③ 18. 在C语言中,函数的隐含存储类别是( )。 (A) auto (B) static (C) extern (D) 无存储类别

形参是放在堆栈中的除非特殊声明的函数如cxxbuilder
fastcall!所以选a;
参数一般不会声明为寄存器变量的!这样的函数没有办法调用!
因为形参放在何处由函数的调用约定来确定,而不是由参数的存储类型决定!
同样外部变量或静态变量也不会,不能定义成寄存器变量。
寄存器变量只适合函数内部定义的,用完不管的,通常是循环的计数变量!
静态和外部是常用的两个存储类型。
外部变量一定在函数外部定义,这就是c,c++,外部变量中的“外部”的真实含义。
静态变量,可以定义在
1)函数外部,属于文件模块的,表示文件内部的具有全局性质的局部变量(存储在全局数据区。
2)函数内部,第一层大括号内,属整个函数全局性质的局部变量。
存储在全局数据区。
3)函数内部的任何非数据定义的两个大括号内部;
分程序(c一般叫语句组)属整个分程序全局性质的局部变量。存储在全局数据区。
而函数内的非静态数据缺省为自动变量,所auto一般会省略不写。
外部变量,一般定义时也省略掉extern,
只有在头文件里,和使用非本文件定义的外部变量时,以及函数内部引用外部变量时,
才写上extern
表示这是引用说明,不是定义,要看定义别处找找。
如果本文件没定义,就是引用别的文件的同名变量!
所以除了函数参数(形参)和函数内部非静态变量,再没有自动变量了。
函数内部可以定义三种变量,局部静态变量,自动变量,寄存器变量;外部变量在函数内部只能有引用说明!不能在函数内部定义!
extern外部,静态static两个存储类型是相对的。
外部变量,全部在函数外部定义。外部变量,分配在全局数据区,是全局变量。
外部是相对函数的。
静态有定义在函数内部,和函数外部的区分,还有函数内部全局,和函数内部某一语句组内部的区分,实际上,无论哪种静态变量,都属于全局变量,分配在全局数据区。
ps:
除了变量外,函数也有
extern外部,静态static
两种存储类型。
由于c语言不允许函数内部定义函数。
所以函数只有这两种存储类型。
函数的缺省存储类型是extern,
所以无论定义,还是引用说明,通常都会省略extern;
c语言中,只有写了static的函数,才是静态函数。
c语言中,函数可以在函数内部,有引用说明,不会在函数定义在函数内部。
c++中
类也有静态变量和静态函数;
由于类的静态函数和静态变量的外部定义会有类名和作用域限定符(也叫作用域运算符)::作为前缀,所以类外定义不写static;
类也有静态变量和静态函数的含义是这个变量和函数属于整个类的(实际也是全局变量,分配在全局数据区),除了类和他的成员,外不能使用它了。
类通过类名,成员通过它本身(obj.
;pobj->;
(*pobj).
refobj.
类名::)使用;
只要类本身定义了。
不通过类的对象,就可以使用类的静态变量和静态函数。
其他成员,除了构造函数外都必须通过通过类的对象,才能使用。

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

C语言如果不写一个函数的返回值类型,默认隐含就是int

⑤ C语言中函数的隐含存储类型

由于C函数内不能再定义函数,C函数的存储类型只能是静态的或外部的之一。若定义函数时不指定存储类型是静态的,则它的存储类型就是外部的(extern),即函数允许被程序的其它函数调用。

⑥ 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语言中隐含的存储类别扩展阅读:

函数调用的一般形式为:

函数名(实参表列);

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

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

网络-c函数

⑧ C语言中凡在函数中未指明存储类别的变量,其隐含的储存类别为什么

隐含的储存类别是auto也就是自动,没有为什么,C规定编译器缺省存储类别就是auto

楼上不懂,属于胡扯

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

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

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

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

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

(9)c语言中隐含的存储类别扩展阅读:

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

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

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