在C语言中,函数的形参和实参可以占同一个存储单元,也可以占不同的存储单元吧?

如题所述

形参只是实参的一个副本,即拷贝,它们不能公用存储单元。

参数之间的传递分为数值传递与地址传递,如果是数值传递时,各自占用不同的内存单元,如果是地址传递时,共用同一段内存单元。

函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的回内存单元。

形参只是实参的一个副本,即拷贝,它们不能公用存储单元,不占相同的空间。

扩展资料:

函数调用过程

1、函数的形参列于函数声明中,在函数定义的函数体内使用。在未出现函数调用时,形参不占内存中的存储单元;当函数调用时,形参(任何种类的)是一类将被填充的空白或是占位符

2、将实参的值传递给形参。当函数被调用时,实参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。

3、在执行函数期间,由于形参已经有值,可以利用其进行相关运算。

4、通过return语句将函数值带回到主调函数。

5、调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。 

参考资料来源:百度百科-形式参数

参考资料来源:百度百科-实际参数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-09
形参只是实参的一个副本,即拷贝,它们不能公用存储单元。
如果传入的是指针,那么形参就是实参的一个指针拷贝。此时,形参指针和实参指针指向同一块内存区域,虽如此,但是,不能说它们本身占同一个存储单元。追问

如果传入的是数组,是不是也是这种情况?

追答

如果传入的是数组名,那么,其实也就是传入这个数组中第一个数所存放位置的地址,即指向数组中第一个数的指针。

其实,本来应该就这样简单回答你完事的,但是,为了是你认识清楚一点,我再多提一下:建议你看一下《C专家编程》这本书,书中有一章专门讲数组和指针在什么情况是有区别的。
不过,也不用太担心它们的区别,在绝大部分情况下,数组和指针是可以通用的。

本回答被提问者采纳
相似回答