
向子函数传递数组(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);
} 展开
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);
} 展开
2个回答
展开全部
因为数组做函数形参传递的只是该数组首元素的地址,函数体内测出的字节数是指针的字节数,不是数组占用的字节,sizeof只有在看到数组定义时才能够测出字节数
展开全部
#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;
}
只能这样用
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;
}
只能这样用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询