c语言形参的值能不能传递给实参

如题所述

形参和实参拥有分别的存储空间,即便是指针传递,改变的也只可能是这个指针变量所指向的内容,而不是指针变量本身的值,也即,如有指针变量p,那对实参的变化,有可能改变的也只是*p的值,而不是p本身的值。

实参和形参在英文中,argument和parameter经常可以互换使用,但是C99标准规定了:

对于actualargument或actualparameter使用术语argument(译为实参);对于formalargument或formalparameter使用术语parameter(译为形参)。

为遵循这一规定,我们可以说形参是变量,实参是函数调用提供的值,实参被赋给相应的形参。因此,在上述示例中,times是pound()的实参,n是pound()的形参。类似地,在函数调用pound(times+4)中,表达式times+4的值是该函数的实参。

扩展资料

函数的调用

第1个函数调用是pound(times),times的值5被赋给n。因此,printf()函数打印了5个井号和1个换行符。第2个函数调用是pound(ch)。

这里,ch是char类型,被初始化为!字符,在ASCII中ch的数值是33。但是pound()函数的参数类型是int,与char不匹配。

程序开头的函数原型在这里发挥了作用。原型(prototype)即是函数的声明,描述了函数的返回值和参数。pound()函数的原型说明了两点:

-该函数没有返回值(函数名前面有void关键字);-该函数有一个int类型的参数。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-29
不能,形参是实参的一个副本,实参不是形参的一个副本。
但是,有些时候,我们把形参做成了一个指针类型,用来返回数据。因为,(指针型的)形参虽然是(指针型的)实参的一个副本,但是指针指向的内存是相同的。如果在函数内修改了指针指向的内存的数据的话,(指针型的)实参采用原来的地址,一样可以获得修改后的内存数据的。
第2个回答  2013-12-29
看你是什么形参...
1、直接用变量传参一般是不能传递的。因为变量在传递中是两个等值的不同变量,两者互不影响。
2、如果是指针形参p,实参q,而且在被调函数中是对*p做的修改,那这时候这种修改可以传递。因为这时候是对p q指向的内存的直接修改,这种修改可以保存,从而传递出来。
3、对数组形参做的修改也可以传递。数组名是一个常指针。
第3个回答  推荐于2017-11-26
要看情况,行参只是实参的一个拷贝,形参改变了只是拷贝改变了,实参仍为原来的值,但是你如果用传址调用的话,把形参定义为指针变量,实参调用地址的话,单你把指针所指的变量改变,实参所对应的值也改变了本回答被提问者采纳
第4个回答  2019-10-03
形参和实参拥有分别的存储空间,即便是指针传递,改变的也只可能是这个指针变量所指向的内容,而不是指针变量本身的值,也即,如有指针变量p,那对实参的变化,有可能改变的也只是*p的值,而不是p本身的值。
相似回答