首页 > 编程语言 > 详细

c++ 数组作为函数参数存在的退化问题

时间:2020-05-12 22:31:29      阅读:69      评论:0      收藏:0      [点我收藏+]

引用参考狄泰软件唐老师课程,有兴趣淘宝店铺搜索狄泰软件

常见的数组参数,一维数组,指针数组,二维数组
常见的是一维数组
下面的代码是等价的

void test(int a[]) {

}
void test1(int a[5]) {
}
void test1(int a[3]) {
}
void test2(int *a) {

}

相信经常写代码的你知道,一维数组当作函数参数的时候和指针一样,这是因为当使用数组名传递数组,数组名相当于数组首元素的指针
如果是值变量,会发生拷贝,这将影响效率也可能导致栈内存溢出,所以c++使用指针
对于上面的函数通常做法,是增加一个代表长度信息length的参数,否则函数内部无法知道长度信息
图片总结
技术分享图片
值得注意的是,无法传递一个任意维度的数组,必须提供除了第一维之外的长度信息,需要用于指针运算
说到这里要说一下,其实二维数组就是多个一维数组组合的,是一维数组顺次拼接成的
多维数组的函数参数只有第一维是变化的,其余维都是大小已经确定

c++ 数组作为函数参数存在的退化问题

原文:https://www.cnblogs.com/zero-waring/p/12876601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!