欢迎光临散文网 会员登陆 & 注册

C/C++编程笔记:什么是C++中的阵列衰减?如何预防?

2021-03-23 21:07 作者:C语言编程__Plus  | 我要投稿



什么是阵列衰减?

数组类型和维数的损失称为数组的衰减,通常在我们通过值或指针将数组传递给函数时发生。它的作用是,将第一个地址发送到作为指针的数组,因此数组的大小不是原始的,而是指针在内存中占用的大小。


输出:

数组的实际大小为:28

通过传递值修改数组的大小:8

通过指针传递来修改数组的大小:8

在上面的代码中,实际的数组具有7个int元素,因此具有28个大小。但是通过按值和指针进行调用,数组会衰减为指针并输出1个指针的大小,即8(32位中为4)。

如何防止阵列衰减?

到手柄衰变的典型解决方案是通过阵列的大小也作为参数,而不是在阵列参数的sizeof使用(参见此的详细信息)

防止数组衰减的另一种方法是通过引用将数组发送到函数中。这样可以防止将数组转换为指针,因此可以防止衰减。


输出:

数组的实际大小为:28

通过引用传递来修改数组的大小:28

在上面的代码中,按引用传递数组解决了数组衰减的问题。两种情况下的尺寸均为28。

每天学点小知识,希望对你有帮助~

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

微信公众号:C语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!



C/C++编程笔记:什么是C++中的阵列衰减?如何预防?的评论 (共 条)

分享到微博请遵守国家法律