189 8069 5689

c语言调用函数传值 c语言中函数调用语句

关于c语言 在c中调用函数时,只能把实参的值传递给形参,形参的值不能传给实参。这句话对吗?为什么?

不对,在C语言中,传值有地址传值和参数传值,参数传值只能将实参传值给形参,所以A选项正确。C语言中的外部变量是可以在函数之间传递数据的。

平山网站建设公司创新互联,平山网站设计制作,有大型网站制作公司丰富经验。已为平山近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的平山做网站的公司定做!

C语言中的自动变量是默认的变量,实际上是函数中的局部变量,所以D选项正确。全局变量一经定义都是需要分配内存单元,在程序运行过程中自始至终都会占用固定的空间,在未知内存情况下,最好不要使用全局变量。

函数调用时,值可以双向传递,并没有限制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。

扩展资料

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的值。

传值调用(c语言)

//你运行一下下面的程序就知道了。

#include

stdio.h

int

i;

fun(int

i)

{

int

*r=i;

printf("%d\n",r);//输出形参i的内存地址

i+=1;

printf("%d\n",i);

}

void

main()

{

int

*t=i;

fun(i);

printf("%d\n",t);

//输出全局变量的内存地址

printf("%d\n",i);

}

//可以看得出来两个地址是不同的

在调用函数时,函数是怎样传值的

在C语言中,实参将值传给函数中的形参,实现了自上而下的值传递,就可以调用函数了。

举个浅显一点的例子吧:

#include

void

main()

{

int

swap(int

x,int

y);

int

a,b;

......

swap(a,b);

}

int

swap(int

x,int

y)

{

......

}

在主函数中,将实参a,b的值传递给被调用函数中的形参x,y,即将a,b分别代入x,y中计算,即达到了调用的目的。


分享标题:c语言调用函数传值 c语言中函数调用语句
URL分享:http://jkwzsj.com/article/ddjphoh.html

其他资讯