/*
2020年3月30日22:46:37
diff:后一个元素减去前一个元素,但传入的形参一定要事先
确定好长度,不然会出错。
参数:
dat---要做差分的数组地址
datalen-----传入数组长度
ret_buf-----做差分之后存放的数组地址
ret_len---差分之后的数组长度
*/
void diff(int *dat,int datalen,int*ret_buf,int *ret_len)
{
int i,j=0;
for(i = 1; i<datalen; i++)
{
ret_buf[j++] = dat[i]-dat[i-1];
}
*ret_len = j;
}
int main(void)
{
int a[30]= {0};//要事先定义好数组长度
int i,len;
int *buf; //存放差分后的结果
for(i = 0;i< 30; i++)//差分数组赋值
{
a[i] = i;
printf("a[%d]=%d\n",i,a[i]);
}
buf = (int*)malloc(sizeof(int)*(i-1));//申请动态空间
diff(a,i,buf,&len);
for(i = 0;i< len; i++)
{
printf("buf[%d]=%d\n",i,buf[i]);
}
free(buf);
return 0;
}
运行结果如下