c语言调用函数实参改变 c语言中调用函数时是实参赋值给形参么
C语言问题:能否改变被调函数中实参的内容
形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。
目前创新互联公司已为上千家的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、句容网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
c语言中形参与实参的关系是:形参是实参的值副本。无论参数的类型是什么,传递到子函数中的形参只是实参的值。所以,在改变形参变量自身的值时,是与实参无关的。换句话说,形参的改变不会影响到实参。
比如,你在函数f(int b)里面写 b= 1000; 对于实参a来说并没有任何影响。但是,如果你的函数定义是指针,那么函数可以改变指针上储存的内容,但是不能改变指针本身。
进一步发现,pascal语言不支持可变长参数,而c语言支持这种特色,正是这个原因使得c语言函数参数入栈顺序为从右至左。具体原因为:c方式参数入栈顺序(从右至左)的好处就是可以动态变化参数个数。
在C里面 是无法做到形参改变 实参值同步改变的。只能通过传地址的方式 即参数类型为指针 这样 形参指向空间修改,可以使得实参指向空间同步修改,因为是同一块内存区域。
确实是只能单向传递(在C语言),不矛盾。如果直接传值(void swap(int a,int b)),那么无论在函数里如何修改这个值,都修改的是函数里那个变量的值,不会影响外面。
C语言调用函数后,为什么实参的值没有发生改变?
C语言整型、实型数据,如果以变量名称作为参数,系统规定的处理方式就是:实际参数仅决定形式参数的初值,形式参数在子函数内部的操作与实际参数无关。
调用函数,只能改变指针指向的内存空间的内容,不能改变实参指针变量的值。我觉得题主对指针变量,还算有一点了解。指针变量,其实也就是一个变量,但它的值是一块内存的地址。
如果通过函数传参方式调用,并且不是传的指针,那就不会改变原来的值,如果想改变全局变量的值,可以直接在函数中使用,不需要传参。
实参传给形参时,有两种传递方式,一种是值传递,一种是引用型传递。值传递时,形参的改变并不会反馈给实参,实参并不改变;引用型传递时,形参的改变,会反馈给实参,实参也会改变。引用型传递需要在形参名前面加“&”。
变量的形参是在内存里新的空间里复制一份实参的值进行操作,但不改变实参的值,就比如看到青蛙A想试试蛙肉好吃不?于是你找了一只青蛙B来试吃,结果不错,青蛙B是死了,但是A还好好的,一样的道理。
C语言,函数调用中什么情况时,形参的改变会影响实参改变,什么情况下不...
本质上说,C语言的参数传递都是传值的,所以实参都不会改变。有一种情况可以理解成实参的改变:如果形参接收的是指针,而实参传递的是地址,在函数内部对该地址中的内容进行了改变,看起来就是修改了实参的值。
这里实参自然不会变化,你这么理解,实参是实际参与到函数计算中的参数,但你这里函数的返回值中,并不包含输入实参的变化,固实参是无变化的。
形参和实参如果都是地址(即指针)时,会发生改变形参即可改变实参的情况,因为这时形参和实参实际上是对应同一段内存的数据。
c语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。还是用例子说话吧。
当前名称:c语言调用函数实参改变 c语言中调用函数时是实参赋值给形参么
文章网址:http://myzitong.com/article/dsppehi.html