java实参和形参与形参分别占用不同的存储空间 这句话错在哪 ?

在C语言中,以下说法正确的是()。 A.实参和与其对应的形参分别占用独立的存储单元。 B.实参和与_百度知道
在C语言中,以下说法正确的是()。 A.实参和与其对应的形参分别占用独立的存储单元。 B.实参和与
B.形参是虚拟的.实参和与其对应的形参分别占用存储单元C,以下说法正确的是()在C语言中.只有当实参和与其对应的形参同名时才共占用存储单元D.实参和与其对应的形参分别占用独立的存储单元。A
提问者采纳
可以概括为“用之建,调用完之后就释放,系统才分配给形参存储单元D形参是虚拟的,所以形参不占内存单元,程序结束之后才释放。
实参是系统分配开始就分配内存给它的,用完撤”,不占用存储单元解释:
只有当函数调用,所以实参是占内存单元的,发生实参向形参的数据传递时
C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是?
答案:值传递实参和形参之间的数据传递只有两种:址传递、值传递简单变量传的是数值,所以是值传递。指针变量或数组名传的是地址,所以是址传递。
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁第九章__数组、指针、函数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
第九章__数组、指针、函数
好​好​学​习
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:331.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢实参与形参分别占用不同的存储空间 这句话错在哪 ?_百度知道
实参与形参分别占用不同的存储空间 这句话错在哪 ?
也可能占全局空间等实参可能占栈空间,形参只占栈空间,也可能占静态空间
来自团队:
其他类似问题
为您推荐:
存储空间的相关知识
其他2条回答
形参实参用的存储空间都是stack
所以是同一个存储空间
像malloc用的就是heap,也叫堆
可是书上写了一句话所以我很混淆
&因为实际上形参数组并不存在,编译系统不为形参数组分配内存&
这句话怎么理解呢?
不是说形参没有内存么
不就是不占用内存空间了么
实在不好意思 我这块不太懂
形参本质上是个地址,需要带到函数中,自然需要存储空间来存放
只是在退出的是后会释放这部分的空间
实参也是一样
形参在系统编译时是不会分配存储空间的,在调用时才在stack里分配
不对,如果是byref传址,他们共用一个存储空间
我们还没学到你说的那种复杂程度 抱歉啊…
就是说byref传址这个没有学 考试的时候我得用我们学过的知识答题^_^
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁pascal语言中的值形参与变量形参(初学者)
此文章仅仅为自己的学习,如有侵犯,请通知,本人第一时间删除,O(∩_∩)O谢谢&&
Pascal作为一种面向过程的结构化高级编程语言,是可以使用过程和函数调用的。在进行函数或过程的调用时,要注意参数的传递问题。Pascal语言的过程和函数中的参数有两种:形参和实参。形参又分为值形参和变量形参。掌握好形参不仅为编程带来方便,更为程序提高了易读性,同时也便于修改。
初学者学习形参有一些困难,往往难于区分值形参和变量形参,我认为应从以下几方面入手:
1. 形参的定义
值形参和变量形参在过程定义时定义,如以下一个小过程:
procedure&&
pp1(x,y:var&
z:real);&&& *
x,y为值形参,
I,j:&&&&&&&&&&&&&&&&&&&&&&&&&&&&
*z为变量形参
I:=1& to& y&
在以上的例子中,说明了一个过程pp1,在过程中,使用3个参数:x,y,z,其中x,y为值形参,z为变量形参,在说明值形参时只需说明它的类型,说明变量形参时要加关键字var;这一点和普通变量与常量的定义相似。
2. 过程调用时的形参
在主程序对过程进行调用时,形参要以实参代替。调用过程使用的实参也因为值形参和变量形参而不同,如以下两个调用语句:
&&&&&&&&&&&&&
&&&&&&&&&&&
b:=2;a:=3;
pp1(b,a,x);&&&&&&&
* b,a,x为实参;
pp1(2,3,x);
其中的实参和形参的对应关系如下图。
&&&&&&&&&&&&y&
&&&&&&&&&&&&&&&&&&&x,y为形参(地址)
&&&&2&&&&&&&&&&&&&
3&&&&&&&&&&&&&&
&&&&&&&&&&代表内存单元
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
实参A,B分别把值2,3送给
&&&&&&&由形参X,Y所指向的内存单元
------------------------------------------------------------&&
a,b为实参(地址)
&&&&&&&&&&&&&&&&&&
Z&&&&&&&&&&&&&&&&&&&&&&
z为形参(地址)
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
x&&&&&&&&&&&&&&&&&&&&&&
x为实参(地址)
&&&&&&&&&&&&&&&
两个调用语句是等效的,要将23存储在x单元中,在调用时要求实参和形参的位置一一对应(如图1),且类型也要对应相同或兼容,否则将出错。
3. 值形参和变量形参的区别
除了定义形式不同外,值形参和变量形参还有以下几方面的区别:
在调用时,值形参既可以以实参的值代入,也可以以实参的名代入;如上例中的两个调用语句,b和2代入等效,a和3代入等效;而变量形参必须以实参名代入,如上例的实参x;
在内存中,两者的实参所占用的空间也不同。值形参和它的实参分别占不同的内存单元,如图1,调用时,只是将实参的值传递给形参,而实参所在单元的内容本身不会发生变化;而变量形参和它的实参占用同一个内存单元,调用时不仅传递值,还传递地址,也就是说是用不同的名字来表识同一个存储单元。
由2可知,执行一次调用语句后,值形参和变量形参存储单元变化情况不同,值形参只接受实参的值,使用值形参的目的也是为了传递一个值给过程,故在调用前,值形参对应的实参必须要赋一次值,且形参在过程中的改变不会影响实参单元的值。&
4.如何灵活使用值形参和变量形参
由二者的区别,我们不难看出它们的应用:可以用值形参来传递一些不需或不应改变的参数,使它们对程序起作用但不会影响自身的值;当需要从过程中传出一个期望值时,则可以使用变量形参,同时形参在程序调试时也可起到很好的监视作用,如下例:
programm& pp(input,output);
var& a,b:w,x:
& writeln(‘input& Y or N to
& readln(a,b);
& pp2 (x,y:var z,w:integer);
&&if (x=’y’) and (y=’n’)
z:=1;w:=0;
else if (x=’n’) and (y=’y’) then
z:=0;w:=1;
z:=99;w:=99;
writeln(z,w);
& pp2(a,b,x,w);
如果主程序调用pp2后输出结果为0和1或1和0,则说明x,y的值对了。
以上只是举了一个简单的例子说明值形参和变量形参的实际应用,在具体的程序设计中,读者可以灵活的使用参数,以达到较好的程序调试的目的。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。28、若函数调用时的实参为变量,以下关于函数形参和实参的叙述正确的是。A)函数的实参和其对应的形参共占同一存储单元。B)形参只是形式上的存在,不占用具体存储单元。C)同名实_百度作业帮
拍照搜题,秒出答案
28、若函数调用时的实参为变量,以下关于函数形参和实参的叙述正确的是。A)函数的实参和其对应的形参共占同一存储单元。B)形参只是形式上的存在,不占用具体存储单元。C)同名实
28、若函数调用时的实参为变量,以下关于函数形参和实参的叙述正确的是。A)函数的实参和其对应的形参共占同一存储单元。B)形参只是形式上的存在,不占用具体存储单元。C)同名实参和形参占同一存储单元。D)函数的形参和实参分别占用不同的存储单元。
D形参和实参的类型必须要一致,或者要符合隐含转换规则,当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变. 而如果函数的参数是指针类型变量,在调用该函数的过程中,传个函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身.所以在函数体内部可以改变实参的值.
形参如果不是指针和引用,则形参为实参的拷贝副本。所以个人认为此题答案选D

我要回帖

更多关于 形参 实参 的文章

 

随机推荐