关于求数组长度
先看两个小程序:第一个如下:
#include <stdio.h>
void main()
{
float a[6]={1,2,3,4,5,6};
int b;
b=sizeof(a)/sizeof(a[0]);
printf("%d\n",b);
}
第二个如下:
#include <stdio.h>
int getlength(float *a)
{
int length;
if(a==NULL)
return 0;
length=sizeof(a)/sizeof(a[0]);
return length;
}
void main()
{
float a[6]={1,2,3,4,5,6};
int b;
b=getlength(a);
printf("%d\n",b);
}
对于第一个程序输出结果为6,第二个输出为1,也就是说用sizeof(a)/sizeof(a[0])来求数组的长度时,在主函数中可以,而如果把a当一个参数传到一个函数中求出的结果永远是1。我在网上查了一下,说把一个数组a当参数传到一个函数里面之后,它就变成一个指针了,不再具有数组的特性。现在我要编辑一个函数:float *GetAmplsOfATrc(float *trcData) {...} trcData是一个数组名,由外界传进来,现在在这个函数里我不仅要读取trcData的数据,还需要定义一些和trcData长度相同的一些数组,因此需要求trcData的长度。用上面第二个程序中的方法来求显然是错的,那么这个问题该怎么解决?求各路大神解答