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

形参未被调用就不存在存储空间

发布时间: 2022-01-16 07:57:51

1. 形参分配存储空间吗

不分配是说形参本身不分配,他只是一个名字,标号。分配,说的是发生函数调用的时候分配。
就像钱本身有价值吗? 但是当大家同意用它流通就有“价值”了。

2. c++涵数的行参在未被调用之前不会分配空间,函数的形参的要和实参相

?那里填“类型”——其实这题出得并不科学:“相同”自然好,但“兼容”也就可以了,比如实参是int型,而形参是double型,也是完全可以的。

3. C++ 下列关于形参程序代码的问题

建议你看看有关书籍里讲《标识符的作用域、生存期、可见性》方面的部分。

首先,变量传参函数 void swap1(int x,int y) :当函数被调用的时候,系统为形参 x、y 开辟了存储空间,并用主函数中实参 x、y 的值初始化形参 x、y(x、y 对于程序员名字一样,但在内存里是不同的存储单元)。然后,由于主函数被挂起,传参函数便只能操作新的变量 x、y ,然而,在函数内部操作 x、y 是不会影响到原来主函数里的实参 x、y 的值的(存储空间不同)。形参的值虽然交换过了,但因为不能保留下来,所以在程序里没有任何意义。函数调用完毕之后,形参 x、y 被销毁,分配的内存空间被释放,回到主函数,输出 x、y 的值就会是主函数中定义的 x、y 的值 5、6。

第二个,指针传参函数 void swap2(int *x,int *y) :这里涉及指针的知识。执行 swap2(&x,&y) 时,把 x、y 的地址传递给指针变量 x、y (同理,名字一样,但存储单元不同,类型当然也可以不同)。函数里对形参 x、y 进行解引用(* 操作符),依地址找变量实际的存储单元,直接操作变量。所以修改了主函数里定义的 x、y 的值,成功地实现了交换。输出结果为 6、5。

最后,引用传参函数 void swap3(int &x, int &y) :本来,用原变量初始化引用类型的新变量,相当于给原变量起别名。在这里也是这样,不过新名字与原名字一样,都是 x、y ,但是这新旧名字还是有区别的。在函数里只能操作定义的新名字变量,但是新名字变量是原实参的别名,所以在函数里操作 x、y 相当于直接操作主函数里的 x、y 。主函数里的 x、y 刚刚被指针传参函数修改过,所以修改后值又恢复到原来定义时的样子,输出结果 5、6。

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

对的

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

5. 1.下面描述正确的是: a.函数的形参在函数未调用时预分配了存储空间

a.函数的形参在函数未调用时预分配了存储空间
错误,运行时分配,未调用时不分配。

b.若函数的定义出现在main函数之前,则可以不必再声明
错误,函数需要在它被调用之前声明,这个跟main()函数无关

c.若一个函数没有return语句,则什么值都不返回
语言不同结果不同,c/c++:函数声明的时候已经声明了它的返回值类型,比如int型.如果没有返回值要声明成void,如果一个int型的函数,没有return语句,编译的时候会报错.别的语言比如说perl,cobol之类的.没有return语句,那函数返回值是最后一条有意义语句的值,比如最后一条是$a = 1+1;则返回2.

d.一般来说,函数的形参和实参的类型应该一致
对,函数的实参个数和形参个数相等,实参与对应的形参类型一致。如果用表达式,表达式类型 应与对应形参 一致。

6. c++函数调用结束,形参单元被释放.意思就是形参不占存储空间了

应该是这样,包括函数里的临时变量,除非你使用了new

7. C语言中形参在未调用时为什么不占内存

C语言的函数的形式参数是函数的局部变量,所以只在调用时创建,返回后消失。

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

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

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

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


(8)形参未被调用就不存在存储空间扩展阅读

形参和实参的区别

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

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

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

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

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

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

10. 为什么说形参只有被调用时才分配内存,从汇编角度如何理解

高级语言,一般用栈传参,形参的生命周期是函数级。函数调用时,压栈(分配空间)。

具体请参考C调用约定