#include<iostream>
using namespace std;
void cal(int *a)
{
cout << sizeof(a) / sizeof(int) << endl;
}
int main() {
int a[] = { 1,2,3,4,5 };
cout << sizeof(a) / sizeof(int) << endl;
cal(a);//数组作为参数传递时,相当于一个指针,因此sizef(a)实际求的是指针的长度,这是个固定值。编译如果选择x86是32位系统
system("pause");
return 0;
}
这说明了数组作为参数传递时,相当于一个指针,因此sizef(a)实际求的是指针的长度,这是个固定值。编译如果选择x86是32位系统,那么函数内部sizeof(a) / sizeof(int) 的结果就是1.
所以,一般还要额外把数组长度也作为函数参数传入函数。
#include<iostream>
using namespace std;
void cal(int *a,int length)
{
cout << length << endl;
}
int main() {
int a[] = { 1,2,3,4,5 };
int len = sizeof(a) / sizeof(int);
cal(a,len);//数组作为参数传递时,相当于一个指针,因此sizef(a)实际求的是指针的长度,这是个固定值。编译如果选择x86是32位系统
system("pause");
return 0;
}