1.如果要求一个数组的长度,我们可以采取:
int a[]={1,2,3};
int len=sizeof(a)/sizeof(int);
的形式,
然而,此时若有个函数
void test(int a[])
内部有如下的语句:
int len=sizeof(a);
此时len=4,求出的是指针的字节数,而非整个数组的字节数。
2.发生上述现象的原因是,
数组在作为函数参数传递过程中,会退化成指针。这也是为什么指针作为参数传递时,经常要一个长度。
1.如果要求一个数组的长度,我们可以采取:
int a[]={1,2,3};
int len=sizeof(a)/sizeof(int);
然而,此时若有个函数
void test(int a[])
int len=sizeof(a);
2.发生上述现象的原因是,
数组在作为函数参数传递过程中,会退化成指针。这也是为什么指针作为参数传递时,经常要一个长度。