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

 我来答
风若远去何人留
2017-05-10 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450104
专业C/C++软件开发

向TA提问 私信TA
展开全部

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

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

My_Persistence
2016-11-16 · TA获得超过3465个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:414万
展开全部
因为形式参数的数组,在C++中被看作是指针变量。如:
void func(int a[]),C++编译系统会把它看成是void func(int *a)来处理,所以,你加不加长度都无关紧要了。
追问
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-11-16
展开全部
因为其实传递的是地址写成数组是在阻止你重定向
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式