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

#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);
}

因为数组做函数形参传递的只是该数组首元素的地址,函数体内测出的字节数是指针的字节数,不是数组占用的字节,sizeof只有在看到数组定义时才能够测出字节数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-23
#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;
}
只能这样用
相似回答