在c++语言中,为啥形式参数中定义的数组可以没有长度?
3个回答
展开全部
因为函数形参为数组时,只是形式为数组,实际上会按照指针传参。
1、在C/C++中,允许使用数组做参数,比如
void func(int n[10]);
在某些时候也会写作
void func(int n[]);
不管哪种方式,实际上在经过编译后,和定义
void func(int *n);
都是相同的。
2、 将数组转为指针,可以提高效率,减少实际传递的值。比如如果传参数为int a[100], 要传实际数组的话,需要传递sizeof(int)*100 字节的值,而如果传指针,那么只需要传sizeof(int *)大小的数据就可以了,可以大大提高效率。
3、 转为传指针,可以将函数中的改动回传给主调函数。
综上,既然要转为指针,那么用int *n, int n[], int n[100], 其实也就没什么区别了,自然是合法的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询