
正文
c语言函数之间传递实参 c语言函数的传递
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于c语言 在c中调用函数时,只能把实参的值传递给形参,形参的值不能传给实参。这句话对吗?为什么?
不对c语言函数之间传递实参,在C语言中,传值有地址传值和参数传值,参数传值只能将实参传值给形参,所以A选项正确。C语言中的外部变量是可以在函数之间传递数据的。
C语言中的自动变量是默认的变量,实际上是函数中的局部变量,所以D选项正确。全局变量一经定义都是需要分配内存单元,在程序运行过程中自始至终都会占用固定的空间,在未知内存情况下,最好不要使用全局变量。
函数调用时,值可以双向传递,并没有限制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。
扩展资料
C语言参数传递c语言函数之间传递实参:
1、值传递
参数传递只把变量a的值传递给了变量p,此时变量a与变量p是值相同的两个不同变量,在内存不同的两个地址中,所以对变量p赋值只是修改了变量p的值,并不能修改变量a的值。总结一句话就是:值传递不传递变量本身,只传递变量的值。
2、引用传递
与值传递不同,func的参数是int p,表示引用传递。如输出所示,通过引用传递,变量a的地址与变量p是相同的,也就是说引用传递把a的地址传给了变量p,所以对变量p进行赋值之后,变量a的值也改变了,因为变量a与变量p实际是同一个变量。
3、指针传递
指针传递,顾名思义,int *p表明p是一个指针变量,调用func(a)是把变量a的内存地址传递过去赋值给指针变量p,此时指针变量p的值是变量a的内存地址,故可看到输出p为efbfde2c(变量a的内存地址)。
*p是对指针p的值(即变量a的内存地址)进行取值,相当于*a,所以对*p进行赋值也就改变了变量a的值。
相关问答
Q1: 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类型的参数。
Q2: 在C语言中,定义一个函数的形参和实参之间具体是如何进行参数传递的?
函数中的形参和调用时的实参都是数组名时,传递方式为(
地址传递
)
此时形参和实参共用同一段内存
都是变量时,传递方式为(
值传递
)
实参与形参互不影响
Q3: 在C语言中参数是如何传递的?
在主函数中,先定义一个变量,然后输入一个值,在a()这个函数中输出。当程序运行a(num); 这一步时,把num的值赋值给num_back,在运行程序过程中,把实际参数的值传给形式参 数,这就是函数参数的传递。
形参和实参可能不只一个,如果多于一个时,函数声明、调用、定义的形式都要一一对应, 不仅个数要对应,参数的数据类型也要对应。
Q4: 在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。
函数实参与形参之间c语言函数之间传递实参的数据传递方式是( 值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递c语言函数之间传递实参:传值,实际是把实参的值赋值给行参,相当于copy。
那么对行参的修改,不会影响实参的值 。引用传递: 实际是传值的一种特殊方式,只是c语言函数之间传递实参他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都指向同一个对象,因此对形参的修改会影响到实参。
扩展资料
传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。
引用传递是将变量的内存地址传递给方法,方法操作变量时会找到保存在该地址的变量,对其进行操作。会对原变量造成影响。可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。
参考资料:百度百科—引用传递
Q5: C语言中实际参数和形式参数的设置及传递方式
C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。
下面通过举例来说明实参和形参的设置方法以及传值与传地址的两种函数调用方式。
值传递方式:
#includestdio.h
void fun(int a, int b) // 此处a, b为形参
{
a++;
b++;
}
void mian()
{
int a=1, b=2;
fun(a, b); // 按传值方式调用函数fun,此处a,b为实参
printf("%d, %d\n", a, b); // 输出a=1, b=2
}
地址传递方式:
#includestdio.h
void fun(int *a, int *b)
{
*a = 4;
*b = 5;
}
void mian()
{
int a=1, b=2;
fun(a, b); // 按传地址方式调用函数fun
printf("%d, %d\n", a, b); // 输出a=4, b=5
}
c语言函数之间传递实参的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言函数的传递、c语言函数之间传递实参的信息别忘了在本站进行查找喔。






