c语言,关于形参实参单向值传递!
c语言,关于形参实参单向值传递!如图,我的困惑是这也是自定义函数利用形参改变实参啊,为什么这就可以,而如果函数中是传的指针变量就不可以?不是说的c语言中形参变量和实参变量...
c语言,关于形参实参单向值传递!如图,我的困惑是这也是自定义函数利用形参改变实参啊,为什么这就可以,而如果函数中是传的指针变量就不可以?不是说的c语言中形参变量和实参变量之间数据传递是单向值传递吗?
。 展开
。 展开
1个回答
展开全部
分两种情况给你对比一下
函数形参用普通变量,当函数被调用的时候,实参的值被赋值给了形参,函数被调用的时候开辟了内存空间给形参,也就是数据被复制了,然后函数开始处理形参的数据,这个时候和实参的数据是没有任何关系了。当函数结束的时候形参的内存空间是要被释放,或者说删除的,所以对实参啥也没干,只是拿了实参的数据复制了一份,然后对复制的那一份算的很起劲,结果最后删除了,啥也没干。
函数形参用指针,当函数被调用的时候,实参指针,也就是把地址复制了一份给形参,但是函数中我们用取内容符号'*'对形参指针所指的内容,同时也是实参指针所指的同一份内容进行处理,函数结束的时候形参指针的值是被释放了,可是形参指针,同时也是实参指针所指的内容还在。
感觉讲的蛮清楚了,不懂再追问。
追问
谢谢你,我好像是懂了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询