函数的隐含存储类别是

2018-06-29 06:40:54 秘密整理 隐含存储类别 隐含存储类别

c所有函数都是外部函数

Q1:在c语言中,函数的变量的隐含存储类别是?

auto
自动存储类别

Q2:凡是函数中未指定存储类别的局部变量,其隐含的存储类别是?

自动存储类型

Q3:“函数的隐含存储类别”是什么意思?

//给你个标准答案。。。
2.C语言中,函数的隐含存储类型是( )
①auto ②static
③extern ④无存储类别
「解」由于C函数内不能再定义函数,C函数的存储类型只能是静态的或外部的之一。若定义函数时不指定存储类型是静态的,则它的存储类型就是外部的(extern),即函数允许被程序的其它函数调用。所以解答是③。

Q4:在c语言中,函数的隐含存储类别是

extren

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

auto
自动存储类别

关于动态存储方式与静态动态存储方式

从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量。
从另一个角度,从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。

静态存储方式:是指在程序运行期间分配固定的存储空间的方式。

动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。


用户存储空间可以分为三个部分:

程序区;

静态存储区;

动态存储区。


全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放。
动态存储区存放以下数据:

函数形式参数;

自动变量(未加static声明的局部变量);

函数调用实的现场保护和返回地址。


对以上这些数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。
在C语言中,每个变量和函数有两个属性:数据类型和数据的存储类别。

auto变量

函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中。
函数中的形参和在函数中定义的变量(包括在复合语句中定义的变量),都属此类,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。这类局部变量称为自动变量。自动变量用关键字auto作存储类别的声明。例如:int f(int a){ /* 定义f函数,a为参数 */ auto int b,c=3; /*定义b,c自动变量*/ /* …… */}
a是形参,b,c是自动变量,对c赋初值3。执行完f函数后,自动释放a,b,c所占的存储单元。
关键字auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。

用static声明局部变量

有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,这时就应该指定局部变量为“静态局部变量”,用关键字static进行声明。
【例8-15】考察静态局部变量的值。

#includeintf(inta){autointb=0;staticintc=3;b=b+1;c=c+1;return(a+b+c);}intmain(void){inta=2,i;for(i=0;i<3;i++)printf("%d ",f(a));return0;}


对静态局部变量的说明:

静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储空间,函数调用结束后即释放。

静态局部变量在编译时赋初值,即只赋初值一次;而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。

如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。


【例8-16】打印1到5的阶乘值。

#includeintfac(intn){staticintf=1;f=f*n;returnf;}intmain(void){inti;for(i=1;i<=5;i++)printf("%d!=%d ",i,fac(i));return0;}

register变量

为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。
【例8-17】使用寄存器变量。

#includeintfac(intn){registerinti,f=1;for(i=1;i<=n;i++)f=f*i;returnf;}intmain(void){inti;for(i=0;i<=5;i++)printf("%d!=%d ",i,fac(i));return0;}


对寄存器变量的几点说明:

只有局部自动变量和形式参数可以作为寄存器变量;

一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;

局部静态变量不能定义为寄存器变量。

用extern声明外部变量

外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。

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

答案是A.auto这个答案是肯定的。 书上有变化 只要没有特殊说明 都默认是这个的aotu类型。


wwW.jizHuba.cOm

小提示:内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

隐含存储类别 推荐文章:
推荐不满意?点这里  ››  

隐含存储类别