ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

C语言--形式参数被调用时的内存状态

2021-10-16 21:30:15  阅读:182  来源: 互联网

标签:形参 -- C语言 函数参数 数组名 参数 数组 实参 形式参数


普通变量当作函数参数:

形参只在这个函数执行的时候才能会被分配内存,计算机调用函数时,会在内存中开辟一个空间用于存放实参值,并不会影响函数之外赋值给形参的变量a,变量a和被赋值的形参的内存空间时两个独立的空间,这个称作按值传递。

当函数调用完成,赋值的形参使用的内存空间会被释放。

数组当作函数参数:

 对数组名做函数参数时,不是进行值传递,不会把实参数组的每一个元素的值都赋给形参数组的各个元素,因为实际上形参数组是不存在的,编译系统不会为形参数组分配内存。

那么,数据的传送是如何实现的呢?数组名就是数组的首地址,用数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实实在在的数组。实际上是形参数组和实参数组为同一数组,拥有同一段内存空间。这种传值方式成为按引用传递。

形参中给出数组的长度是无效的,编译器并不会给形参的数组分配内存。

数组在函数中的形参写法:

//方式1
void nzp(int a[])

//方式2
void nzp(int *a)

//注:允许不给出形参数组的长度
     形参数组和实参数组的类型必须是一致的,否则将会引起错误
     形参数组和实参数组的长度可以不相同,因为在进行调用时,只是向形参数组传入的是实参数组的首地址。

参考博文:C语言用数组作函数参数_C语言中文网 (biancheng.net)

标签:形参,--,C语言,函数参数,数组名,参数,数组,实参,形式参数
来源: https://blog.csdn.net/bi_ji_xiao_sheng/article/details/120780752

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有