我写了一个函数来计算一个数组和这个数组本身之间的外部差异,并且只保存那些为正的结果(见下面的代码)
void outer_pos(double *x, int *n, double *output){
int i, j, l;
for(i=0, l=0; i<*n; i++){
for(j=0; j<*n; j++){
if((x[j]-x[i])>0){
output[l+1]=x[j]-x[i];
output[0]=(double)(++l);
}
}
}
}
然后,在下面的函数中,我调用outer_pos
. 一个问题是数组 xouter 可能包含绑定值。没有绑定值,正差异的数量是 ( nsamp) (*nsamp-1)/2,但是使用绑定值,实际数字更小。所以我想知道是否有任何方法可以声明 v1v2 使得大小取决于outer_pos
. 我主要使用 R,它不需要初始化数组,所以我不确定如何在 C 中完成。
void foo(double *x, double *y, int *nsamp){
int i, j, k, oper=2, l;
double* result=malloc(sizeof(double)*((*nsamp)*(*nsamp-1)/2 + 1));
double* xouter=malloc(sizeof(double)*(*nsamp));
for(i=0;i<*nsamp;i++)
xouter[i]=x[i]+y[i];
outer_pos(xouter, nsamp, &result[0]);
free(xouter);
.
.
.
.
}