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

实参什么时候释放存储空间

发布时间: 2022-06-23 17:52:30

1. 关于形参和实参

dim a as integer,y as integer,x as integer
private sub command1_click()
open "c:\\a1.dat" for append as #1
call aa(5) '这里数字5就是实参
y=y+a:print #1 "y=";y,"a=";a
close #1
end sub
private sub form_load()
open "c:\\a1.dat" for append as #1: close #1
end sub
sub aa (i as integer)'这里 i就是形参
x=1
do until x>i
a=a+x:x=x+5
loop
end sub

按值传递参数
按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用 ByVal 关键字指出参数是按值来传递的。

例如:

Sub PostAccounts (ByVal intAcctNum as Integer)
.
. '这里放语句。
.
End Sub

按地址传递参数
按地址传递参数使过程用变量的内存地址去访问实际变量的内容。结果,将变量传递给过程时,通过过程可永远改变变量值。按地址传递参数在 Visual Basic 中是缺省的。

如果给按地址传递参数指定数据类型,就必须将这种类型的值传给参数。可以给参数传递一个表达式,而不是数据类型。Visual Basic 计算表达式,如果可能的话,还会按要求的类型将值传递给参数。

把变量转换成表达式的最简单的方法就是把它放在括号内。例如,为了把声明为整数的变量传递给过程,该过程以字符串为参数,则可以用下面的语句:

Sub CallingProcere ()
Dim intX As Integer
intX = 12 * 3
Foo (intX)
End Sub

Sub Foo (Bar As String)
MsgBox Bar

'Bar 的值为字符串‘ 36 ’。
End Sub

不明白的加网络hi

2. 形参只有在被调用时才分配存储空间这句话对吗。

对的

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

3. c语言中,函数发生调用时,实参和形参都会占用内存吗

是的,
形参

实参
是两个不同的
存储单元
,都占用内存空间,当
函数调用
结束后,形参的内存空间也就会被释放掉了。

4. 形参和实参有什么作用

一、区别:

1、函数定义方式不同

形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。

实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

2、使用原理不同

函数的形参列于函数声明中,在函数定义的函数体内使用。当函数调用时,形参(任何种类的)是一类将被填充的空白或是占位符。

实参是用来填充形参的。当函数被调用时,形参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。

3、传值调用和引用调用不同

传值调用和引用调用指的是用于参数传递过程中的一种机制。传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。

二、例子

1、你定义一个函数void add(int a, int b),这里的a和b就是形参。

2、当你进行函数调用的时候,add(1, 2),这里的1和2就是实参。

(4)实参什么时候释放存储空间扩展阅读

形参和实参的特点

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

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

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

5. C语言问题

1: 好像能进行相等的判断吧,如int a=2,b=3,c=4;if(a*b==b*c) 只不过在这样的条件下,判断得到的是个真假值,为0或是1;
2: 明这个也不一定,如实参定义为int a[5];而形参也定义为int a[5],这样它们就共用一段内存空间,因为它们的数组名是一样的,一维数组的数组名就是这数组的首地址;
3:实参是在定义时就分配了,而形参的要在被调用时才分配,而且用后空间就自动释放了;
4:因为goto太灵活了,goto到不该goto的地方就出问题了,就像指针一样,指到不该指的地方就危险了;
5:准确的说int *fip()是返回指向整型数的指针函数;

6. C语言中实参和形参是怎么回事求详细解答!!!


语法意义
上说,
形参

函数
内部为外部传进来的
参数
取的名称,而
实参
则是函数外部准备传给函数的参数的名称,这两个是相对的从
内存
意义上说,形参是函数内的内存空间,实参是函数外的内存空间,每次调用都要将实参从函数外空间复制到函数内内存空间,因此改变形参的值对于实参一点影响也没有。
形参:全称为"形式参数"是在定义函数名和
函数体
的时候使用的参数,目的是用来接收调用该函数时传如的参数.
实参:全称为"实际参数"是在调用时传递个该函数的参数.
形参和实参的类型必须要一致,或者要符合隐含转换规则,
当形参和实参不是指针类型时,在该函数
运行时
,形参和实
参是不同的
变量
,他们在内存中位于不同的位置,形参将实
参的内容复制一份,在该函数运行结束的时候形参被释放,
而实参内容不会改变.
而如果函数的参数是指针类型变量,在调用该函数的
过程
中,传个函数的是实参的地址,在函数体内部使用的也是
实参的地址,即使用的就是实参本身.所以在函数体内部
可以改变实参的值.

7. C语言:函数的形式参数存放在内存的

形参只是一个符号,不会分配具体的空间的..
当函数被调用的时候,具体给出的参数,也就是实参,其实是一份拷贝..
它的内存空间在该函数的堆中进行分配.
比如
定义函数
int
add(int
,int);

在主函数中
定义变量
int
x,
y..
调用函数
add(x,
y);
那么在函数add的堆中会分配出空间,来保存实参x
y的拷贝..
而主函数中的
x
y
是在主函数的堆中保存的...

不晓得有没有说明白..呵呵

8. 实参和形参都需要占用存储单元么

实参和形参各占用独立的存储单元。

实参和形参是各占独立存储空间,函数调用过程中,实参向形参拷贝复制值。实参是个变量,形参也是个变量。

如果占用同一片空间的话,编译时候就不存在实参形参类型不匹配的报错。参数传递中,形参值的改变不影响实参的值。


(8)实参什么时候释放存储空间扩展阅读

形参和实参的区别

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

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

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

4、函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

9. C语言局部变量是何时分配和回收空间的如图中所有的变量他们的分配和销毁都是在什么时候呢

前面所以回答都不全面。
1、局部变量所占用的内存空间的分配和销毁,取决于编译器的实现,编译器在为了优化程序性能,可能有不同的策略来分配、释放内存。比如:VC编译器可能在函数入口处即分配这里的全部变量,GCC编译器也可能真的在定义处才分配。
2、你该探究的应该是这些局部变量的生命期。这个b\c\d\e 的生命期都是开始于定义变量的地方,终止于语句块结束的地方(对应的反花括号处结束)
3、这是 C++ 的代码,C 的代码必须在函数开始处定义所有局部变量,以便于编译器为所有局部变量准备栈空间。所以有你这个困惑(局部变量在函数入口时就全部入栈,这个说法是错的么?)

10. 函数中的形参在什么时候得到存储空间

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