C语言参数传递
来源:互联网 发布:康德判断力批判 知乎 编辑:程序博客网 时间:2024/05/01 07:53
函数在调用时把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的是实际参数。在函数调用之前,实际参数的值将被复制到这些形参中。
C语言在参数调用时,实参和形参之间的数据都是单向的“值传递”方式。C语言要求函数的实参有确定的值,在函数调用时给形参分配相应的内存单元,同时实参的“值”赋(复制)给形参,实现数据从实参到形参的传递。因为是复制,所以在操作形参过程中不会影响到实参内容。
1、简单变量或数组元素作为函数参数
数组元素本身属于简单变量,在向形参传递数据时,只需要将变量的“值”复制一份放到形参变量中去操作,此时在被调用函数中操作的对象(形参)与实参并不在同一内存单元,并且在调用结束后形参所占内存单元被释放,因此调用函数不会影响到实参变量的值,同时被调函数也不会影响到主调函数中的其他变量的值。
2、指针变量或数组名作为函数参数
指针变量作为参数在调用时仍然会将其值赋给形参,相当于复制。此时数据在实参与形参间的传递仍然是单向的,调用函数不会影响实参的值,即指针变量中所在地址。而与简单变量不同的是,指针变量复制给形参的值本身是一个地址。
3、数组名作函数参数
数组名本身就是一个特殊的指针变量,其值是数组的首地址,因此作为实参时其传给形参的是内存中某指定单元的地址,调用过程中形参数组与实参数组占用同一段内存单元,因此对形参数组的操作也就是对实参数组的操作,对实参数组与形参数组来说数据传递变现为“双向”的,而对实参变量与形参变量而言数据的传递仍然是单向的。
4、结构体数组作函数参数
1)结构体数组元素作为实参
将结构体变量所占的内存单元的内容全部顺序复制给形参。当实参的成员中包含数组时,形参对应的成员接收到的是一个地址。
2)结构体数组名作为实参
传递的是内存中已指定单元的地址,调用过程中形参数组与实参数组占用同一段内存单元,因此对形参数组的操作也就是对实参数组的操作,对数组的操作的变现是双向的。
- c语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言 参数传递
- C语言参数传递
- c语言传递参数
- C语言的参数传递
- C语言的参数传递
- C语言的参数传递
- C语言函数参数传递
- c语言参数传递问题
- c语言的参数传递
- c语言函数参数传递
- c语言参数传递方式
- C语言中的参数传递
- 区块链开发技术路线选择的思考(之一)
- vim命令大全
- 抢占式内核和非抢占式内核
- 包含限定项LIS
- Linux下的shell编程(三)--替换,运算符,字符串,数组
- C语言参数传递
- 今天是10.1,以后每天记录自己学习的点滴,MVC,MVP,MVVM?
- mysql分页通用存储过程
- 索引
- Handler可能导致的内存泄漏
- NS2学习笔记1:NS开发架构与C++的开发方法
- 菜鸡学习之路之------MPAndroidChart 一个开源图表库
- BestCoder Round #88
- java-hibernate框架介绍1