C语言--形式参数被调用时的内存状态
2021/10/17 7:11:05
本文主要是介绍C语言--形式参数被调用时的内存状态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
普通变量当作函数参数:
形参只在这个函数执行的时候才能会被分配内存,计算机调用函数时,会在内存中开辟一个空间用于存放实参值,并不会影响函数之外赋值给形参的变量a,变量a和被赋值的形参的内存空间时两个独立的空间,这个称作按值传递。
当函数调用完成,赋值的形参使用的内存空间会被释放。
数组当作函数参数:
对数组名做函数参数时,不是进行值传递,不会把实参数组的每一个元素的值都赋给形参数组的各个元素,因为实际上形参数组是不存在的,编译系统不会为形参数组分配内存。
那么,数据的传送是如何实现的呢?数组名就是数组的首地址,用数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实实在在的数组。实际上是形参数组和实参数组为同一数组,拥有同一段内存空间。这种传值方式成为按引用传递。
形参中给出数组的长度是无效的,编译器并不会给形参的数组分配内存。
数组在函数中的形参写法:
//方式1 void nzp(int a[]) //方式2 void nzp(int *a) //注:允许不给出形参数组的长度 形参数组和实参数组的类型必须是一致的,否则将会引起错误 形参数组和实参数组的长度可以不相同,因为在进行调用时,只是向形参数组传入的是实参数组的首地址。
参考博文:C语言用数组作函数参数_C语言中文网 (biancheng.net)
这篇关于C语言--形式参数被调用时的内存状态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享