当前位置:首页 » 服务存储 » 形参的存储空间用什么表示
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

形参的存储空间用什么表示

发布时间: 2022-07-27 19:36:40

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

C。

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

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

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

(1)形参的存储空间用什么表示扩展阅读:

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

{

register int Miles;

}

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

static int Count;

int Road;

main()

{

printf("%d ", Count);

printf("%d ", Road);

}

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

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

网络-形式参数

网络-存储类

Ⅱ C语言中,形参的缺省的存储类型说明是( ) A auto (自动)Bstatic( 静态) Cregister(寄存器)

应该是A auto的,形式参数的值是放在堆栈上面的,当不同的实参进来时,会有相应的入栈和出栈的操作,所以形式参数的值是一直在变化的。故是自动的

Ⅲ C语言中实参和形参分别存放在内存的什么位置

形参只是一个符号,不会分配具体的空间的..当函数被调用的时候,具体给出的参数,也就是实参,其实是一份拷贝..它的内存空间在该函数的堆中进行分配.比如 定义函数 int add(int ,int); 在主函数中 定义变量 int x, y..调用函数 add(x, y);那么在函数add的堆中会分配出空间,来保存实参x y的拷贝..而主函数中的 x y 是在主函数的堆中保存的... 不晓得有没有说明白..呵呵

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

c语言中形参或者说所有的变量,缺省的存储类别都是auto的。C语言中四种存储类别:auto、static、extern、register 。

其中大部分均为auto,auto为默认的类别,一般未标明的都是auto;如果标明了哪种类别,那就按标明的来。

(4)形参的存储空间用什么表示扩展阅读:

形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。

没有形参的函数在形参表的位置应该写int main(void) 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。

形参的特点:

1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。

4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

Ⅳ 在c语言中形参的缺省存储类是

形参的类型是不能省略的。
我估计你是想说函数返回值存储类型吧! 函数的存储类型就是函数定义时函数名前面的数据类型前面的存储类型,缺省时应该是:extern ,表示该函数属外部函数(即可以被本C文件外的其他C源程序文件中的函数调用)。

Ⅵ 一道VB题计算题

'其实你用F8逐行调试,然后随时看各个字母当时的值,就知道原因了。
'有一个很重要的原因,只要是函数内没有定义x和y的,都是用全局变量的值,只有sub1里自己有定义y,用的是函数内的值。
'另一个重要原因是PrivateSubsub1(ByValmAsInteger,nAsInteger)中的ByVal,ByVal按值传递(a),意思是传入的形式参数改变了,但是不影响实际参数的数值,默认是地址传递
DimxAsInteger,yAsInteger
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger
a=5
b=3
Callsub1(a,b)'Callsub1(5,3)
Printa,b'a因为是ByVal按值传递的,所以没变,b是默认的,所以随着n=2
Printx,y
EndSub
PrivateSubsub1(ByValmAsInteger,nAsInteger)‘m=5,n=3
DimyAsInteger
x=m+n'x=5+3=8
y=m-n'y=5-3=2
m=fun1(x,y)'fun1函数会用到两次,我们用A和B表示,A:fun1(8,2)得出:m=18
n=fun1(y,x)'经过fun1函数后,x=10,y不变,还是用函数内的值y=2,那么B:fun1(2,10)得出:n=2
EndSub
PrivateFunctionfun1(aAsInteger,bAsInteger)AsInteger'A:fun1(8,2)B:fun1(2,10)
x=a+b'A:x=8+2=10,这时候a因为代入的是x(全局变量)的值,所以也a=10,b不变,b=2同理,B:x=2+10=12,b=12,a=2
y=a-b'A:y=10-2=8同理,B:y=2-12=-10
Printx,y'A:打印108B:打印12-10
fun1=x+y'A:fun1=10+8=18B:fun1=12+(-10)=2
EndFunction

Ⅶ java中形参和实参是占一个存储位置还是占两个

"执行方法的时候,如果是基本数据类型是分配栈里的内存
方法执行完,你的形参就消失了

如果是new出来的东西在堆里分配内存 "
不错。
我可以补充一些:
一般地,对于一般的语言,形参是不会占有内存分配的,它只是用来在实参传入时匹配检测罢了,而对于实参,它是程序或线程 中实际存在的,会分配内配的。这个实参会在栈(stack)中有一份存储。但java对象的存在打破了这一个约定,java的对象是存在堆(heal)中的,当你new了一个对象实例时就会在堆中分配空间,同时一般的要运用这个对象会使用一个引用(或者你说是指针),而这个引用是放在栈中的,所以你上面所说的实参实际是用的那个引用,同时当你结束了方法调用时,这个引用也会消失,但是heal中实际存在的对象并不会立即消失,这一般的由gc来自动释放。
你说的存储位置我不大明白是什么意义,只能分析一下具体的内存分配情况。