在c++语言中,为啥形式参数中定义的数组可以没有长度?

如题所述

因为函数形参为数组时,只是形式为数组,实际上会按照指针传参。

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], 其实也就没什么区别了,自然是合法的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-16
因为形式参数的数组,在C++中被看作是指针变量。如:
void func(int a[]),C++编译系统会把它看成是void func(int *a)来处理,所以,你加不加长度都无关紧要了。追问

本回答被提问者和网友采纳
第2个回答  2016-11-16
因为其实传递的是地址写成数组是在阻止你重定向
相似回答