向子函数传递数组(C/C++) (为什么在子函数和主函数中计算数组的长度不同?) 谢谢!!!

#include<iostream>usingnamespacestd;intLen_Arrer_Of(inta[]);voidmain(){intarr[3];cout... #include <iostream >
using namespace std;
int Len_Arrer_Of(int a[]);

void main()
{
int arr[3];

cout<<"(调用子函数) arr[]数组占用内存:"<<Len_Arrer_Of(arr)<<endl<<endl;

cout<<"(主函数内) arr[]数组占用内存:"<<sizeof(arr)<<endl<<endl;

cout<<"(主函数内) arr[]数组的长度为:"<<sizeof(arr)/sizeof(*arr)<<endl<<endl;
}

int Len_Arrer_Of(int arr[])
{
cout<<"(子函数内) arr[]数组的长度为:"<<sizeof(arr)/sizeof(*arr)<<endl<<endl;

return sizeof(arr);
}
展开
 我来答
chiconysun
2011-04-27 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:3115万
展开全部
因为数组做函数形参传递的只是该数组首元素的地址,函数体内测出的字节数是指针的字节数,不是数组占用的字节,sizeof只有在看到数组定义时才能够测出字节数
网域55
2018-06-23 · TA获得超过1750个赞
知道答主
回答量:58
采纳率:100%
帮助的人:7.1万
展开全部
#include <iostream>
using namespace std;
int intLenght(int x[],int sizeOf)
{
return sizeOf/sizeof(int);
}
int main()
{
int a[]= { 16,2,18,200,19};
int lenght= intLenght(a,sizeof(a));
cout << lenght << endl;
return 0;
}
只能这样用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式