网站建设资讯

NEWS

网站建设资讯

c语言函数之间传递规则 传递函数c语言实现

简答题,c语言中函数传递参数的方式有哪2种,含义是什么

一:值传递,只是把一个变量的值复制到调用函数中去。

创新互联建站服务紧随时代发展步伐,进行技术革新和技术进步,经过十载的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行成都网站设计、网站制作、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

二:引用传递,把变量的地址(即指针)传到调用的函数去,调用的函数对变量的地址进行的操作 会改变参数的值。

c语言函数调用规则

_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。

_cdecl 按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数的函数只能使用该调用约定)是C和C++程序的默认调用约定。__cdecl调用约定仅在输出函数名前加上一个下划线前缀,格式为_functionname。

_fastcall方式的函数采用寄存器传递参数,VC将函数编译后会在函数名前面加上"@"前缀,在函数名后加上"@"和参数的字节数。实际上,它用ECX和EDX传送前两个双字(DWORD)或更小的参数,剩下的参数仍旧自右向左压栈传送,被调用的函数在返回前清理传送参数的内存栈。__fastcall调用约定在输出函数名前加上一个“@”符号,后面也是一个“@”符号和其参数的字节数,格式为@functionname@number。

C语言结构型、函数间数据传递问题?

(1)

里传的是main里y的值,传过去的x在函数b里只是个局部对象,影响不到main里的实参y

(2)

的实质是传递了y数组的首地址,也就是y数组中唯一一个元素的地址,b函数里接受到x其实是main里y[0]的地址,所以x[0]

==

main里的y,传给scanf的变量地址也就是main里y的地址,所以y接受到了b函数中scanf的输入

2的实质是传递变量的地址,然后通过地址修改实参,1则是传递变量本身的值

c里面如果想通过形参修改实参,只能使用2的方法

void

b(struct

a

x[

])

等价于

void

b(

struct

a*

x

)

在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。

函数实参与形参之间的数据传递方式是( 值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递:传值,实际是把实参的值赋值给行参,相当于copy。

那么对行参的修改,不会影响实参的值 。引用传递: 实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都指向同一个对象,因此对形参的修改会影响到实参。

扩展资料

传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。

引用传递是将变量的内存地址传递给方法,方法操作变量时会找到保存在该地址的变量,对其进行操作。会对原变量造成影响。可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。

参考资料:百度百科—引用传递


分享名称:c语言函数之间传递规则 传递函数c语言实现
转载源于:http://cdweb.net/article/hjiiod.html