使用sizeof()函数获取数组大小C++与函数调用之间的问题。
如果传递的是数组名,那么在函数内部,无法使用sizeof()获取数组大小,因为传递的是一个指针(数组名传递是,自动生成一个指针作为形参,指向原数组),若用sizeof(),则函数内部得到的是指针的大小而不是原来数组的大小!
- 例如,有函数如下
void getLength(int pre[]) {
cout<<sizeof(pre) / sizeof(pre[0])<<endl;
}
- 然后主函数里面这样调用
int pre[] = { 5,6,32,1,1,2 };
getlength(pre);
结果输出并不是6(期望的原本数组的大小),而是一个指针的大小除以一个int大小。(我电脑里是一个指针8个字,一个int类型4个字)
输出:
2
解决方法:
函数定义:
void getLength(int pre[],int size) {
cout << size << endl;
}
主函数里调用:
int pre[] = { 5,6,32,1,1,2 };
getlength(pre,sizeof(pre)/pre[0]);
输出结果:
6