[讨论]请教高手:用指针求数组长度的算法?
看下例;
void name()
{
int*array;
int num=count(...);
array=new int[num];
}
关于此数组array,由于array的长度取决于num,而num又是由用户在使用程序时随机操作后通过一系列计算产生的,是不可预测的。我想求此数组长度,怎么办呢?开始我想到使用sizeof(array),后来想了下又试了下,sizeof(array)只能求得此指针长度,求不到array数组实际长度。怎么办呢?
我想了下,考虑了以下办法:由于array的结尾地址是无法预测的,于是我在初始化的时候预先在p+num*sizeof(int)后加入连续的6个0,然后写个计数函数count(),碰到连续6个0就认为该数组完结,否则count++,具体如下:
int lengthof(int*array)
{
int*_array=array;//计算0个数时使用的数组
int len=0;//数组长度
int count=0;//0的个数的计数器
bool judge=false;//如果judge为真则已计算出数组长度
while(!judge)
{
if(*array)//若array不为0则数组长度+1
len++;
else
{
_array=array;
judge=true;
while(!judge&&count!=6)//进入判断是否拥有连续6个0
{
if(!(*_array))//*_array为0
count++;
else
judge=false;//6个0不连续,标志位为假
_array++;
}
if(count==6)
judge=true;
array++;
}
}
但是自己感觉这算法既不专业,又太繁。想请教一下各位高手有没有简单点的算法来实现这一功能?或者VC本身自带有什么函数可以调用?