扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
形参只是实参的一个副本,即拷贝,它们不能公用存储单元。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、雅安服务器托管、营销软件、网站建设、肇州网站维护、网站推广。
参数之间的传递分为数值传递与地址传递,如果是数值传递时,各自占用不同的内存单元,如果是地址传递时,共用同一段内存单元。
函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的回内存单元。
形参只是实参的一个副本,即拷贝,它们不能公用存储单元,不占相同的空间。
扩展资料:
函数调用过程
1、函数的形参列于函数声明中,在函数定义的函数体内使用。在未出现函数调用时,形参不占内存中的存储单元;当函数调用时,形参(任何种类的)是一类将被填充的空白或是占位符。
2、将实参的值传递给形参。当函数被调用时,实参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。
3、在执行函数期间,由于形参已经有值,可以利用其进行相关运算。
4、通过return语句将函数值带回到主调函数。
5、调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。
参考资料来源:百度百科-形式参数
参考资料来源:百度百科-实际参数
首先说swap(int a,intb)与main函数调用的sawp(a,b),首先讨论变量的作用域,也就是变量的生存周期,main函数中的swap(a,b)中的a与b的作用域是整个main函数,而swap(int a,intb)中的a,b是swap的函数参数,作用域是swap函数,而main函数调用swap函数时会把main函数中的a与b的值传递给swap函数中的
a与b(所以把swap函数中的a与b称作是副本,因为他们本身的值就是main函数的a b复制过来的),这里两对a与b仅仅是值相等(在内存里地址是不同的),我们在swap函数中操作a,b让a与b交换,仅仅是让swap函数中的a b交换了,而a,b出了swap函数就不起作用了,不能实现main函数中的交换,因为这里用的是值传递的方式。
而要想让main函数中的a,b值交换怎么办呢?这就需要swap函数中的两点参数的内存地址与main函数中的相同。而C语言中存储地址的数据类型是指针,所以把swap函数中的参数换成指针就好了,也就是swap(int*a,int*b),这里的a,b都是指针变量,用来保存两个整型数字的内存地址,而main函数中需要调用swap函数把main函数的a,b的地址传过来,也就是swap(a,b)这里的是取地址符,这样swap函数就得到了对应的两个地址,由于这样*a(这里的*代表解引用)与main函数中的a 具有了一样的地位,操作*a与main函数中操作a是一样的,因为内存地址是一样的,*b也一样。这样就可以完成在swap函数中交换*a与*b后,就实现了main函数中的a,b交换。
这个程序,就是让你搞清楚函数传值和传址的区别。
这里fun第一个参数是传址(值改变外部函数对应的变量值也改变)。第二个参数是传值(值改变外部函数对应的变量值不变)。
所以这个程序,x传地址x,y传值。经过fun函数改变后,x的值改变了,而y的值不变。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流