大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C语言中,举个例子swap(int a,int b)函数。你的main()函数中调用swap(x,y)。是把x,y的值传过去,传给a,b后。x,y和a,b的联系就断了。所以叫做单向传递。
成都创新互联公司主营黑河网站建设的网络公司,主营网站建设方案,app开发定制,黑河h5微信小程序搭建,黑河网站营销推广欢迎黑河等地区企业咨询
C++有一种方式叫做引用,例如:int i=x; 可以理解为i是x的别名,地址还是相同的。这时候在swap()函数中,x,y是真正地参与到运算中去。并把结果返回调用函数。所以这个叫做双向传递。
这是我的理解,如果不对,请见谅。
C语言在形参和实参之间传递的不仅是值传递,也包括地址传递的。
细节如下:
C语言函数参数传递包括按值传递和按地址传递两种;
当形式参数是数组、指针时都是使用的按地址传递。
因为你的子函数参数里有指针变量,是可以改变实参的
数组其实和指针变量的意思差不多,可以照着地址传进指针变量的参数
是对的!!!
至于原因,就是C语言的规定,C语言在处理内存时就是这么做的
分两种情况给你对比一下
函数形参用普通变量,当函数被调用的时候,实参的值被赋值给了形参,函数被调用的时候开辟了内存空间给形参,也就是数据被复制了,然后函数开始处理形参的数据,这个时候和实参的数据是没有任何关系了。当函数结束的时候形参的内存空间是要被释放,或者说删除的,所以对实参啥也没干,只是拿了实参的数据复制了一份,然后对复制的那一份算的很起劲,结果最后删除了,啥也没干。
函数形参用指针,当函数被调用的时候,实参指针,也就是把地址复制了一份给形参,但是函数中我们用取内容符号'*'对形参指针所指的内容,同时也是实参指针所指的同一份内容进行处理,函数结束的时候形参指针的值是被释放了,可是形参指针,同时也是实参指针所指的内容还在。
感觉讲的蛮清楚了,不懂再追问。